在TensorFlow中,最大池化中的padding方式'SAME'和'VALID'有什么区别?
0 784
1
该提问暂无详细描述
收藏
2021-01-22 13:33 更新 阿托 •  17067
共 1 个回答
高赞 时间
1

举个例子: x:形状为[2,3],通道为1的输入图像 valid_pad:具有2x2内核,步长为2和valid填充的最大池化。 same_pad:具有2x2内核,步长为2和same填充的最大池化(这是经典的处理方式)

输出形状为: valid_pad:没有填充,因此输出形状为[1,1] same_pad:将图像填充为[2,4]形状(使用-inf将图像形状填充到[2,4],然后应用最大池),输出形状为[1,2]

x = tf.constant([[1., 2., 3.],
                 [4., 5., 6.]])

x = tf.reshape(x, [1, 2, 3, 1])  # give a shape accepted by tf.nn.max_pool

valid_pad = tf.nn.max_pool(x, [1, 2, 2, 1], [1, 2, 2, 1], padding='VALID')
same_pad = tf.nn.max_pool(x, [1, 2, 2, 1], [1, 2, 2, 1], padding='SAME')

valid_pad.get_shape() == [1, 1, 1, 1]  # valid_pad is [5.]
same_pad.get_shape() == [1, 1, 2, 1]   # same_pad is  [5., 6.]

借助下面这组图片可以直观地理解:

padding方式为“valid”时如第一张图所示,滤波器窗口保持在图像内部滑动。

padding方式为“same”时如第三张图所示,输出同输入大小相同。

收藏
2021-01-22 16:06 更新 正直的烤面包 •  4004