什么是自适应平均池化以及它是如何工作的?
Posted
技术标签:
【中文标题】什么是自适应平均池化以及它是如何工作的?【英文标题】:What is Adaptive average pooling and How does it work? 【发布时间】:2020-02-29 17:07:15 【问题描述】:我最近在尝试实现 AlexNet 时遇到了 Pytorch 中的一个方法。 我不明白它是如何工作的。请用一些例子解释它背后的想法。以及它在神经网络功能方面与 Maxpooling 或平均极化有何不同
nn.AdaptiveAvgPool2d((6, 6))
【问题讨论】:
【参考方案1】:在平均池化或最大池化中,您基本上可以自行设置步幅和内核大小,将它们设置为超参数。如果您碰巧更改了输入大小,则必须重新配置它们。
另一方面,在自适应池中,我们指定了输出大小。并且自动选择步幅和内核大小以适应需要。下面的等式用于计算源代码中的值。
Stride = (input_size//output_size)
Kernel size = input_size - (output_size-1)*stride
Padding = 0
【讨论】:
怎么Stride = (input_size//output_size)
?
找到另一个answer 解释这个公式只适用于输入大小是第二维整数倍的情况。否则计算输出尺寸时发生的地板化会导致这个公式无效。以上是关于什么是自适应平均池化以及它是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章
对于torch.nn.AdaptiveAvgPool2d()自适应平均池化函数的一些理解