如何选择卷积核的大小?越大越好还是越小越好?
答案是小而深,单独较小的卷积核也是不好的,只有堆叠很多小的卷积核,模型的性能才会提升。
• CNN的卷积核对应一个感受野,这使得每一个神经元不需要对全局图像做感受,每个神经元只感受局部的图像区域,然后在更高层,将这些感受不同局部的神经元综合起来就可以得到全局信息。这样做的一个好处就是可以减少大量训练的参数。
• VGG经常出现多个完全一样的3×3的卷积核堆叠在一起的情况,这些多个小型卷积核堆叠的设计其实是非常有效的。两个3×3的卷积层串联相当于1个5×5的卷积层,即一个像素会和周围5×5的像素产生关联,可以说感受野是5×5。同时,3个串联的3×3卷积层串联的效果相当于一个7×7的卷积层。除此之外,3个串联的3×3的卷积层拥有比一个7×7更少的参数量,只有后者的 (3×3×3) / (7×7) = 55%。最重要的是3个3×3的卷积层拥有比一个7×7的卷积层更多的非线性变换(前者可以使用三次ReLu激活,而后者只有一次)。
卷积神经网络池化后的特征图大小计算
卷积后的大小
W:矩阵宽,H:矩阵高,F:卷积核宽和高,P:padding(需要填充的0的个数),N:卷积核的个数,S:步长
width:卷积后输出矩阵的宽,height:卷积后输出矩阵的高
width = (W - F + 2P)/ S + 1
height = (H - F + 2P) / S + 1
当conv2d(), max_pool()中的padding=‘SAME’时,width=W,height=H,当padding=‘valid’时,P=0
输出图像大小:(width,height,N)
池化后的大小
width = (W - F)/ S + 1
height = (H - F) / S + 1
边界填充问题
卷积操作有两个问题:
1. 图像越来越小;
2. 图像边界信息丢失,即有些图像角落和边界的信息发挥作用较少。因此需要padding。
卷积核大小通常为奇数
一方面是为了方便same卷积padding对称填充,左右两边对称补零;
n+2p-f+1=n
p=(f-1)/2
另一方面,奇数过滤器有中心像素,便于确定过滤器的位置。
两种padding方式:"same"/"valid"
“VALID”只会丢弃最右边无法扫描到的列(或者最底部无法扫描到的列)。
“SAME”试图在左右添加padding,但如果列添加的数量是奇数,则将额外的添加到右侧(即保持双数时,左右padding相通,偶数时,右侧/底部 比 左侧/顶部 多1),在垂直方向同理)。
此文是博主的学习笔记,参考其他博主的笔记,自己只是记录一下自己学习的过程,如有侵权请联系,谢谢!
本文转自:博客园 - 战争热诚 ,转载此文目的在于传递更多信息,版权归原作者所有。