我将举一个例子使其更清楚:
x
:输入形状为[2,3],1通道的图像valid_pad
:具有2x2内核,步幅2和有效填充的最大池。same_pad
:具有2x2内核,跨度2和相同填充的最大池(这是 经典的处理 方式)
输出形状为:
valid_pad
:此处没有填充,因此输出形状为[1,1]same_pad
:在这里,我们将图像填充为[2,4]形状(使用-inf
,然后应用最大池),因此输出形状为[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_poolvalid_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.]



