最近我已经使用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
有人可以向我解释吗?
非常感谢。
答案 0 :(得分:2)
基本上要由您决定要如何填充池化层的行为。
这就是pytorch的平均池(例如nn.AvgPool2d
)具有可选参数count_include_pad=True
的原因:
默认情况下(True
)平均池将首先填充输入,然后将所有元素视为相同。在这种情况下,您的示例的输出确实为1.33。
另一方面,如果设置count_include_pad=False
,则池化层将忽略填充的元素,示例中的结果将为3。