当前位置: 首页 > news >正文

卷积神经网络的基本结构

卷积神经网络的基本结构

与传统的全连接神经网络一样,卷积神经网络依然是一个层级网络,只不过层的功能和形式发生了变化。

典型的CNN结构包括:

  1. 数据输入层(Input Layer)
  2. 卷积层(Convolutional Layer)
  3. 激活层(Activation Layer)
  4. 池化层(Pooling Layer)
  5. 全连接层(Full Connection Layer)
  6. 损失层(Loss Function Layer)
  7. 精度层(Accuracy Layer)

1.数据输入层

数据输入层不属于网络结构。与传统的全连接神经网络不同,卷积神经网络的输入层是原始图像,而非提取的信息,因此卷积神经网络是一个无监督的特征学习网络

数据输入层主要对原始图像数据进行预处理,基础操作包括取均值灰度归一化,还有一些数据增强的相关操作。

# 这是一个典型的使用protobuf协议进行配置的网络输入层,它是Caffe的深度学习模型的配置文件
layer{name: "data"type: "ImageData"# 输入层的类型是ImageData,也就是原生的图像格式top: "data"top: "clc-label"# 该层有两个参数:image_data_param 和 transform_param # 参数有一些属性,都是图像预处理参数image_data_param { # 这个参数有三个属性source: "all_shuffle_train.txt" # 表示输入训练文件路径batch size: 96 # 表示训练时输入数据的批处理大小shuffle: true # 表示是否采用随机操作}transform_param {mean_value: 104.008 # mean_value表示GRB的均值mean_value: 116.669 mean_value: 122.675crop_size: 48 # 表示输入训练图像尺寸mirror: true # 是数据增强操作,指代水平翻转}include: { phase: TRAIN}
}

2.卷积层

卷积层是网络的特征提取层。卷积神经网络一般包含多个卷积层,一个卷积层可以有多个不同的卷积核。

# 这是一个典型的卷积网络层。
# 包含两类参数,即权重参数和偏置参数,其中配置了两个param属性,分别表示这两类参数的学习率
layer{name: "conv1"type: "Convolution"bottom: "data"top: "conv1"param {lr_mult:1decay_mult:1}param {lr_mult:2decay_mult: 0}convolution_param {num_output:12 # 输出特征层的通道数目pad:1 # 在卷积前进行边界填充像素的行列数kernel_size:3 # 卷积步长stride:2weight_filler{ # 卷积权重参数的初始化策略type:"xavier"std:0.01}bias_filler { # 这里配置的是偏置参数的初始化方法type: "constant"value:0.2}}
}

3.激活层

网络需要激活层进行特征的选择和抑制,早期的Sigmoid等函数使用较多,现在多实用形式更加简单的ReLU函数。

# 这是一个激活层
# RELU激活层非常简单,没有需要学习的参数。(有的激活层有需要学习的参数)
layer{name: "relu1"type:"ReLU"bottom: "conv1"top: "conv1"
}

4.池化层

池化层用于降低特征平面的分辨率及抽象特征

池化用于压缩网络参数和数据,以降低过拟合。

如果输入为一幅图像,那么池化层最主要的作用就是在压缩图像的同时保持该图像特征的不变性

# 这是一个池化层
# 池化层包含一个参数pooling_param
layer {name: "pool"type: "Pooling"bottom: "conv3"top: "pool"pooling_param { # 这个参数中有三个属性pool: MAX # 最大池化kernel_size: 3 # 池化操作的核的大小stride: 2 # 步长}
}

5.全连接层

全连接层通常在卷积神经网络结构的最后,它也有权重和偏置两个参数。

# 这是一个全连接层,通常在卷积神经网络结构的最后,也有权重和偏置两个参数
# 其中配置了两个param属性,分别表示这两类参数的学习率
layer {name: "fc"type: "InnerProduct"bottom: "pool"top: "fc"param {lr_mult: 1decay_mult: 1}param {lr_mult: 2decay_mult: 1}inner_product_param {num_output: 2 # 输出特征维度,通常是分类任务的类别数目weight_filler{ # 权重参数的初始化方式type: "xavier"}bias_filler{ # 偏置参数的初始化方式type: "constant"value: 0}}
}

6.损失层

卷积神经网络的优化原理同一般的机器学习算法类似,需要定义损失目标函数,找到最小化损失函数的参数值,通常利用SGD(随机梯度下降)等算法来调整权值

# 这是一个softmax损失层,损失层的输入就是网络的输出和真实的标签
layer {name: "loss"type: "SoftmaxWithLoss"bottom: "fc"bottom: "clc-label"top: "loss"
}

7.精度层

损失目标函数可以反映网络性能的优劣,但不是最终需要的指标。

对于分类任务,最终需要的是分类精度;

对于回归任务,需要的是定位精度。

因此,一个卷积神经网络还需要接上网络精度层

# 这是一个分类任务的精度层,它与损失层一样,输入是网络的输出和真实的标签
layer {bottom: "fc"bottom: "clc-label"top: "acc"name: "acc"type: "Accuracy"
}

上面定义的完整的网络结构如图1.20所示。

参考文献:

1.书名:《深度学习之图像识别 核心算法与实战案例 (全彩版)》

作者:言有三著

出版社:清华大学出版社

出版时间:2023年7月第一版(第一次印刷)

ISBN:978-7-302-63527-7

http://www.lryc.cn/news/300707.html

相关文章:

  • python:使用GDAL库读取遥感影像指定行列数/经纬度坐标的像素值
  • Redis篇----第一篇
  • C语言-----用二维数组解决菱形的打印问题
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • css篇---移动端适配的方案有哪几种
  • 一、部署Oracle
  • 11-编写自动化测试
  • 爱上JVM——常见问题(一):JVM组成
  • C#系列-EF扩展框架AutoMapper应用实例(40)
  • DataX源码分析-插件机制
  • 容器高级知识: 适配器模式与 Sidecar 模式的区别
  • 使用Xdisplay将ipad作为扩展显示器Agent闪退问题
  • DVXplorer事件相机入门
  • ubuntu屏幕小的解决办法
  • 黑群晖一键修复:root、AME、DTS、转码、CPU型号等
  • Repo命令使用实例(三十八)
  • 2024年华为OD机试真题-分披萨-Python-OD统一考试(C卷)
  • 找负环(图论基础)
  • 无人机飞控算法原理基础研究,多旋翼无人机的飞行控制算法理论详解,无人机飞控软件架构设计
  • 关于内存相关的梳理
  • 7.JS里表达式,if条件判断,三元运算符,switch语句,断点调试
  • RK3568平台开发系列讲解(存储篇)文件句柄与文件描述符介绍
  • 【C++】类和对象(五)友元、内部类、匿名对象
  • 攻防世界 CTF Web方向 引导模式-难度1 —— 1-10题 wp精讲
  • Docker之MongoDB安装、创建用户及登录认证
  • 紫微斗数双星组合:天机天梁在辰戌
  • N-144基于微信小程序在线订餐系统
  • [UI5 常用控件] 09.IconTabBar,IconTabHeader,TabContainer
  • CCF编程能力等级认证GESP—C++5级—20231209
  • 【论文精读】GPT2