Tensorflow的tf.nn.conv2d有个与其他库不一样的地方 – padding。
根据CS231n的说法:
$$ out\_width = (W-F+2P)/S + 1 $$
W是图像宽度,F是filter宽度,P是padding, S是stride。

然而在Tensorflow里却不一样。

tf.nn.conv2d里的padding有两个选项: ‘SAME’ 和 ‘VALID’。 很多人认为’SAME’就是使得out_width和in_width一样,其实不是的。

根据官方的计算公式:

$$ out\_width = ceil(float(in\_width) / float(strides[2])) $$

举个栗子, in_width = 28, strides = [1, 2, 2, 1] 那么:

$$ out\_width = ceil( 28. / 2. ) = 14 $$
并不是想当然的28哦。

那么问题来了,为什么要给这个选项取名’SAME’呢?