那么输出的特征图大小 o 的计算公式则如下:
o 值的大小与 i,f,p,s 这四个变量相关,这里p是单侧padding的像素。
- 当填充方式为 VALID 时,p 值等于 0,代入相应的 i,f,p,s 就可以相应的计算出 o 值了。
- 当填充方式为 SAME 时,p = (f - s) / 2.
如步长 s 为 1 时,输出的o大小等于i,我们则可以计算出相应的 P 值为 p = (f - 1) / 2
如步长 s 为 2 时,输出的o大小等于i/2,我们则可以计算出相应的 P 值为 p = (f - 2) / 2
前后Padding不同
另外需要格外注意的,代码中计算了padding_after和padding_before两个值,是指要将padding_needed平均分配到向量的两侧。这就引出一个问题,当padding_needed是奇数时,是在前pad多一些,还是在后面pad多一些?
tensorflow特别指出,当padding个数为奇数时,需要在后(右下)面多padding一些
caffe则跟tensorflow相反,caffe采用对称padding,相当于会在前面补齐
网友评论