torch.mean 和 torch.nn.avg_pool 有什么区别?

What's the difference between torch.mean and torch.nn.avg_pool?

以一个形状为[4,8,12]的张量为例,这两行有什么区别:

torch.mean(x, dim=2)
torch.nn.functional.avg_pool1d(x, kernel_size=12)

对于您提供的示例,结果是相同的,但这只是因为您指定 dim=2kernel_size 等于第三个(索引 2)维度的维度。 但原则上,您正在应用两个不同的函数,有时恰好与超参数的特定选择发生冲突。

torch.mean 实际上是一个降维函数,这意味着当您对一个维度上的所有值进行平均时,您实际上就摆脱了那个维度。 另一方面,平均 1 维池化在这方面更强大,因为它使您可以更灵活地选择内核大小、填充和步幅,就像您通常在使用卷积层时所做的那样。

您可以将第一个函数视为一维池化的特定情况。