参考博客
卷积操作存在两个问题:
1、图像越来越小;
2、图像边界信息丢失,即有些图像角落和边界的信息发挥作用较少。
因此需要padding
一张M x M的图片,经过卷积核F x F,strides = [1,1,1,1], padding = valid 卷积操作后,
得到大小为 C_side x C_side 的 feature map,
其中,
C_side = M - ( F - 1 ), 即边长减少了 F-1个单位
若想保持卷积后的图像大小不变,需要在原图边长基础上padding F-1个单位的零元素,
即经过 strides = [1,1,1,1], padding = same 卷积操作后,
C_side = ( M +2P )- ( F - 1 ) = M
P = ( F - 1 )/ 2
一般的,卷积核边长大小F为奇数:
1、方便padding = same卷积操作,左右(上下)两边对称补零;
2、奇数卷积核有中心像素,便于确定卷积核的位置。
当卷积步长strides不为1时,边长计算公式如下:
For the SAME padding, the output height and width are computed as:
out_height = ceil(float(in_height) / float(strides[1]))
out_width = ceil(float(in_width) / float(strides[2])) And
For the VALID padding, the output height and width are computed as:
out_height = ceil(float(in_height - filter_height + 1) / float(strides[1]))
out_width = ceil(float(in_width - filter_width + 1) / float(strides[2]))