全连接神经网络对mnist数据集有着不错的表现,mnist数据集的分辨率只用28*28,是单通道的图片。但是在实际生活中图片的分辨率会很大,并且是彩色三通道图片。
实际应用时会先对原始图像进行特征提取,再把提取到的特征送入全连接神经网络,让全连接的神经网络识别出结果。
卷积过程介绍
-
卷积计算可认为是一种有效提取特征的方法。
-
一遍会用一个正方形的卷积核,按指定步长,在输入特征图上滑动,遍历输入特征图中每一个像素点。每一个步长卷积核会与输入特征出现重合区域,重合区域对应元素相乘,对应元素相乘并求和再加上偏置项,得到一个输出特征的一个像素点。
-
卷积核的通道数与输入特征的通道数要保持一致。
-
当前卷积核的个数,决定了当前层输出特征图的深度。如果刚觉当前层的特征提取能力不足,可以多用一些卷积核提高当前层的特征提取能力。
-
卷积核:带训练参数个数 whc+1
-
卷积利用立体卷积核实现了参数的空间共享。这个卷积核可以在图形的不同位置提取图像特征,即实现了空间共享。
卷积计算过程
感受野
感受野(Receptive field):卷积神经网络各输出特征图中每个像素点,在原始输入图片上映射区域的大小。两层33的卷积核的感受野与一层55的卷积核的感受野都是5,他们的提取特征的能力是一样的,通过计算计算量可以比较性能好坏。
全零填充(Padding)
在输入特征图周围填充一圈0。
输出特征长度:
- 使用全零填充时:入长 / 步长,向上取整。
- 不使用全零填充时:(入长 - 核长 + 1) / 步长,向上取整。
TF描述卷积计算层
tf.keras.layers.Conv2D(filters=卷积核个数,
kernel_size=卷积核尺寸,
strides=滑动步长,
padding='same' or 'valid',
activationg='relu' or 'sigmoid' or 'tanh' or 'softmax'), # 如果有BN此处则不写
input_shape(长, 宽, 通道数) # 输入特征维度,可省略)
批标准化(Batch Normalization,BN)
神经网络对0附近的数字更敏感,随着网络层数的增加,特征数据会出现偏离0均值的情况。
标准化:使数据符合0均值,1为标准差的分布。
批标准化:对一批数据(batch),做标准化处理。
批标准化常用在卷积操作和激活操作之间。批标准化为每个卷积核引入可训练参数
γ
\gamma
γ和
β
\beta
β。
BN层位于卷积层与激活层之间。
池化(Pooling)
池化可以减少特征数据量。
最大池化可以提取图片纹理,均值池化可以保留背景特征。
Tensorflow描述池化层:
舍弃(Dropout)
为了缓解神经网络过拟合,常把隐藏层的部分神经元按照一定比例从神经网络中舍弃。神经网络使用时,被舍弃的神经元恢复连接。
卷积神经网络概括
借助卷积核提取特征,然后把提取的特征送入全连接神经网络。
卷积神经网络的主要模块儿如下图: