无法理解TensorFlow文档中的形状(输出)=(形状(值) - ksize + 1)/步幅

时间:2015-11-11 18:49:08

标签: deep-learning tensorflow

以下摘自http://tensorflow.org/api_docs/python/nn.md#pooling

shape(输出)=(shape(value) - ksize + 1)/ strides

其中舍入方向取决于填充:

  • 填充='相同':向下舍入(仅考虑全尺寸窗口)。

  • padding =' VALID':向上舍入(包括部分窗口)。

我无法理解上面的公式。我熟悉以下公式:

shape(out)=(shape(value) - ksize + 2 * pad)/ strides + 1.

这两个公式是否相同?

例如,让我们说shape(value)= 9,ksize = 3,strides = 2,padding =' SAME'。

在第一个公式中,形状(输出)将为(9-3 + 1)/ 2 = 7/2 = 3.5,向下舍入结果为3.

在第二个公式中,形状(输出)将为(9-3 + 2 * 1)/ 2 + 1 = 5

它似乎不是同一个公式。即使我整理第一个,结果也是4。

除此之外,填充定义似乎是反转的。不是同一个'填充包括部分窗口?

1 个答案:

答案 0 :(得分:2)

我想我弄明白了这个问题。如果您假设适当的填充已包含在形状(值)中,则这两个公式将变为等效。但我仍然认为填充类型的定义已在文档中交换。我创建了一个问题来报告:https://github.com/tensorflow/tensorflow/issues/196