目录
1、Padding操作
padding意思:衬垫; 赘语; 废话; 凑篇幅的文字;
如果我们有n*n的图像和f*f的过滤器filter做卷积,最后得到结果的维度是(n-f+1)*(n-f+1),这会导致输出跟输入维数不一样(通常会降维) 因此我们需要用Padding操作对输入图像扩充来调整输出维度
可以用0去填充也可以用其他方法填充
Valid卷积:不填充 不进行padding
Same卷积:一圈圈填充。根据这个公式𝑛 − 𝑓 + 1,当你填充𝑝个像素点,𝑛就变成了𝑛 + 2𝑝,最后公式 变为𝑛 + 2𝑝 − 𝑓 + 1。因此如果你有一个𝑛 × 𝑛的图像,用𝑝个像素填充边缘,输出的大小就 是这样的(𝑛 + 2𝑝 − 𝑓 + 1) × (𝑛 + 2𝑝 − 𝑓 + 1)。如果你想让𝑛 + 2𝑝 − 𝑓 + 1 = 𝑛的话,使得输 出和输入大小相等,如果你用这个等式求解𝑝,那么𝑝 = (𝑓 − 1)/2。因此大多数过滤器的维数f都是奇数 不然-1后不好被2整除。
(填充的p像素不是p个像素点 是指p圈 如果一个矩阵扩充1圈 那么上面会多一行 下面会多一行 总共维度多2)
2、Stride(步长)
步长决定了每次卷积操作后卷积核需要移动的格子数,包括行移动和列移动
假设步长Stride=s 结合Padding=p
那么最后得到的图像维数公式为
(记住最后加1就好) 如果没能整除那么就向下取整,即[x]。(这个向下取整的实际意义是不会因为步长大而让卷积核移动到一部分到外面空气)
数学上的卷积需要先翻转再乘起来求和。
翻转方法:沿着副对角线翻转。比如下面这个矩阵
沿着5 0 -1这条线进行对称 得到结果为
如果是一维,那就简单旋转180°
3、三维卷积
一般的图像是长乘宽,二维的。但是也可以加上通道数作为一个维度变成三维的输入。比如一般的RGB三通道照片,64*64的图像可以表示为64×64×3。
一般要求输入图像的通道数和卷积核的通道数相同,进行卷积时也是将卷积核放在原图像上对应,然后一层卷积核对应一层图像,对应上然后相加然后求和,最后得到的是一维的图像结果。
当我们用多个三维卷积核对一个三维图像进行卷积的时候,最后结果也会类似进行叠起来
比如两个卷积核进行卷积后,最后得到的是4×4×2 的图像 就不是二维了 是三维了。最后一个维度一般称为通道数,在文献里大家也把它叫 做 3 维立方体的深度。
所以通道数一般取决于我们用几个卷积核进行卷积。
4、单层卷积网络的各种标识以及维度计算
5、简单的卷积网络
一个典型的卷积神经网络通常有三层,一个是卷积层,我们常常用 Conv 来标注。还有两种常见类型的层,一个是池化层, 我们称之为 POOL。最后一个是全连接层,用 FC 表示。
6、池化层Pooling
池化层作用:来缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性,简而言之就是拿信息换效率。
池化层一般有最大值池化和平均数池化(最大值用的多),大部分情况下,最大池化很少用 padding。
池化过程中没有需要学习的参数。执行反向传播时,反向传播没有参数适用于最大池化。
池化层处理后通道数不变,类似一个滤波器。因为池化不同于卷积的相加,池化就是一个提取,所以最后通道数不会变。
池化的超级参数包括过滤器大小𝑓和步幅𝑠,常用的参数值为𝑓 = 2,𝑠 = 2, 应用频率非常高,其效果相当于高度和宽度缩减一半。
7、卷积的优点
神经网络可以通过稀疏连接和参数共享来减少参数,以便我们用更小的训练集来训练它,从而预防 过度拟合。而且卷积神经网络善于捕捉平移不变。