带填充的平均池的期望行为是什么?

时间:2019-04-18 02:45:38

标签: image-processing machine-learning computer-vision pytorch max-pooling

最近我已经使用pytorch训练了一个神经网络,并且在其中有一个带有填充的平均池化层。而且我对它的行为以及带有填充的平均池的定义感到困惑。

例如,如果我们有一个输入张量:

[[1, 2, 3],
 [4, 5, 6],
 [7, 8, 9]]

当padding为1且内核大小为3时,第一个内核的输入应为:

 0, 0, 0
 0, 1, 2
 0, 4, 5

pytorch的输出为12/4 = 3(忽略填充0),但我认为应该为12/9 = 1.333

有人可以向我解释吗?

非常感谢。

1 个答案:

答案 0 :(得分:2)

基本上要由您决定要如何填充池化层的行为。
这就是pytorch的平均池(例如nn.AvgPool2d)具有可选参数count_include_pad=True的原因:
默认情况下(True)平均池将首先填充输入,然后将所有元素视为相同。在这种情况下,您的示例的输出确实为1.33。
另一方面,如果设置count_include_pad=False,则池化层将忽略填充的元素,示例中的结果将为3。