3

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

形状(输出)=(形状(值)-ksize + 1)/步幅

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

  • padding = 'SAME':向下舍入(仅考虑全尺寸窗口)。

  • 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。

除此之外,填充定义似乎是倒置的。不是包含部分窗口的“相同”填充吗?

4

1 回答 1

2

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

于 2015-11-14T12:11:44.590 回答