卷积神经网络
全连接NN
每个神经元与前后相邻层的每一个神经元都有连接关系,输入是特征,输出为预测的结果。
参数个数: 前层*后层为权重w+后层偏置b
待优化参数过多容易导致模型过拟合,实际应用中会先对原始图像进行特征提取再吧提取到的特征喂给全连接神经网络
卷积 Convolution
- 卷积可认为是一种有效提取图像特征的方法
- 一般会用一个正方形卷积核,遍历图片上的每个点。图片区域内,相对应的每一个像素值,乘以卷积核内想对应点的权重,求和,再加上偏置。
输出图片变长=(输入图片边长-卷积核长+1)/步长
全零填充 Padding
在输入图片的周围添加一圈0,可以保证输出图片大小和输出图片大小相同
在Tensorflow框架中,使用参数padding='SAME'表示全零填充,padding=‘VAILD’为不使用全零填充
Tensorflow计算卷积
tf.nn.conv2d(
[batch,5,5,1], #输入描述 分辨率 与 通道数
[3,3,1,16], #卷积核描述 行列分辨率 通道数 核个数
[1,1,1,1] #核滑动步长 行步长 列步长
padding='VALID'
)
池化 Pooling
- 池化用于减少特征数量
- 最大值池化可提取图片纹理,均值池化可保留背景特征
Tensorflow计算池化:
#最大值池化
tf.nn.max_pool(
[batch,28,28,6], #输入描述 分辨率 与 通道数
[1,2,2,1], #池化核描述 行列分辨率 通道数 核个数
[1,2,2,1] #池化核滑动步长 行步长 列步长
padding='SAME' )
#平均值池化
pool=tf.nn.avg_pool
舍弃 Dropout
在神经网络的训练过程中,将一部分神经元按照一定的概率从神经网络中短暂舍弃。使用时被舍弃的神经元回复链接。
tf.nn.dropout(上层输出,暂时舍弃的概率)
卷积NN:借助卷积核(kernel)提取特征后,送入全连接网络
lenet5