小编典典

张量流的tf.nn.max_pool中的'SAME'和'VALID'填充有什么区别?

python

什么是“相同”和“有效”填充之间的区别tf.nn.max_pooltensorflow

在我看来,“有效”表示在进行最大池化时,边缘外部不会出现零填充。

根据深度学习卷积算法指南,它说池运算符中将不会有填充,即仅使用的“
VALID” tensorflow。但是最大池的“相同”填充是tensorflow什么?


阅读 208

收藏
2020-12-20

共1个答案

小编典典

我将举一个例子使其更清楚:

  • 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_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.]

2020-12-20