一张灰度图像,就是一个单通道,h*w*1表示高和宽和1通道,每个像素值范围0-255,只有宽和高的图像就是2d矩阵,可以表示成0-1或者0-255,0表示黑色,255表示白色。彩色图像RGB或者BGR是3通道,h*w*3,是一个张量。
卷积:卷积是原始图像与卷积核之间的滑动局部加乘计算过程
1、单通道卷积
比如一个6*6*1的图像,一个3*3*1的卷积核,卷积俩个参数一个是步长stride,就是卷积核在原图像上移动的间隔,padding是填充,有时候为了获取特征需要,在原图像边界处添加一圈0或者1,padding=1表示添加一圈。
卷积计算过程:对应位置相乘,所有相加
0*2+(-1*2)+0*2+(-1)*2+5*3+2*(-1)+0*2+(-1)*2+0*2=15-8=7
所以左后输出7
卷积过程展示:stride=1,padding=0
卷积后尺寸计算:输出图像尺寸=(输出图像尺寸−卷积核尺寸+2∗填充值)/步长+1
卷积后不考虑多次卷积,得到的特征图,进行扁平化处理,就是按行整合,得到,一列多行的一个特征值,作为全连接神经网络的输入训练。
2、多通道输入和输出
输入是一个RGB5*5*3,一个过滤器卷积核是3*3*3,因为3个3*3分别对应图像的3个通道,因为是一张图像的不同通道,所以卷积核的大小必须一致,但是不同通道上的卷积核的参数并不相同。最后结果相加作为输出。最后输出的特征faturemap是一个通道,与过滤器数量相同。实际操作中会添加多个过滤器,因为一个过滤器无法提取训练所满足的特征。
权值:
卷积核的值就是待学习的权重参数。网络训练时,输出的结果会和数据集标签做损失计算,然后把计算得到的损失反向梯度下降去更新卷积核里的每一个参数。所以卷积核里面的参数最终是训练得到的。
偏置:
每一个 滤波器 都包括一个偏置参数(bias)。这个偏置参数是该 滤波器 中所有 卷积核 共享的。最终的卷积结果需要在加上该偏置值。
激活:
卷积与偏置加和后的值,还需要再经过激活函数(比如 ReLU)才得到最终特征图上的值,图像一般都选ReLU作为激活函数,因为大于1的时候趋向无穷大,这样反向计算损失的时候不会出现梯度消失的风险。
卷积的感受野和权值共享:
感受野:就是一个卷积核进行一次计算出来的哪一个值。
权值共享:单个卷积核卷积时,卷积核权值和偏置是不变的。
初始化权重方法:
卷积模式:卷积的参数
full mode和same mode、valid mode
橙色部分为 image, 蓝色部分为 filter。
1、full 模式的意思是,从 filter 和 image 刚相交开始做卷积,白色部分为填 0。filter 的运动范围如图所示。
2、same mode,当filter的中心 K 与 image 的边角重合时,开始做卷积运算。当卷积步长 stride = 1 时,卷积之后输出的 feature map 尺寸相对于输入图片保持不变(same)。
3、 valid mode 当卷积核全部在image里面的时候,进行卷积运算。
前向和反向传播:
前向传播采用 valid 模式,反向是full 模式
当误差反向传播到卷积层时,我们的操作方法依然是一个卷积,只不过要把卷积核翻转(旋转180°),然后在周围补 0,前向传播采用 valid mode 卷积,反向传播时是 full mode 卷积,
如果前向传播是 full mode 卷积,那么反向传播就是 valid mode 卷积,不过依旧要将卷积核翻过来。
而对于 same mode 卷积,它的反向传播也是一个 same mode 卷积,同样也需要翻转卷积核。
最后,对于 strided 卷积(跨超过 1 步的卷积),反向传播是 fractional strided 卷积,反之依然。卷积核同样也要翻转。
池化:池化层也称下采样层,会压缩输入的特征图
一种是平均池化(Average Pooling),即对邻域内的特征点求平均;另一种是最大池化(Max Pooling),即对邻域内的特征点取最大。
最大池化:
平均池化:
池化的反向传播:
假设采用步长为 1 的2×2 池化,将 4×4 的 feature map 池化为2×2
对于最大池化,需要在前向传播时,记住每个池化块中最大值的位置,然后将误差放回去即可。假设四个位置分别为左上,右下,右上,左下,则有
平均池化反向传播:只需要将池化单元的误差平均值放回原来的子矩阵