padding属性的意义是定义元素边框和元素内容之间的空间。
在tf.nn.conv2d函数中,当变量padding为VALID和SAME,函数具体是怎么计算的呢?其实是有公式的。为了方便演示,先定义几个变量:
输入的尺寸高和宽定义成:in_height,in_width
卷积核的高和宽定义成filter_height、filter_width
输入的尺寸中高和宽定义成output_height、out_width
步长的高宽方向定义成strides_height、strides_width.
一 VALID情况:边缘不填充
输入宽和高的公式分别为:
output_width=(in_width-filter_width+1)/strides_width(结果向上取整)
output_height=(in_height-filter_height+1)/strides_height(结果向上取整)
二 SAME情况:边缘填充
输出的宽和高将与卷积核没关系,具体公式如下:
output_width=in_width/strides_width(结果向上取整)
output_height=in_height/strides_height(结果向上取整)
这里有一个很重要的知识点——补零的规则,见如下公式:
pad_height=max((out_height-1)*strides_height+filter_height-in_height,0)
pad_width=max((out_width-1)*strides_width+filter_width-in_width,0)
pad