关于理解卷积操作中Padding的两种方式

参考博客

卷积操作存在两个问题:

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]))

 

 

你可能感兴趣的:(关于理解卷积操作中Padding的两种方式)