nn.AdaptiveAvgPool2d(output_size)详解

谨防原文失效:https://blog.csdn.net/m0_51004308/article/details/118000391

1、函数语法格式和作用

作用:
自适应平均池化,指定输出(H,W)

函数语言格式:nn.AdaptiveAvgPool2d(output_size)

2、参数解释

output_size:指定输出固定尺寸

3、具体代码

import torch
import torch.nn as nn
m = nn.AdaptiveAvgPool2d((5,1))
m1 = nn.AdaptiveAvgPool2d((None,5))
m2 = nn.AdaptiveAvgPool2d(1)
input = torch.randn(2, 64, 8, 9)
output = m(input)
output1 = m1(input)
output2 = m2(input)
print('nn.AdaptiveAvgPool2d((5,1)):',output.shape)
print('nn.AdaptiveAvgPool2d((None,5)):',output1.shape)
print('nn.AdaptiveAvgPool2d(1):',output2.shape)

>>>输出结果:
>nn.AdaptiveAvgPool2d((5,1)): torch.Size([2, 64, 5, 1])
>nn.AdaptiveAvgPool2d((None,5)): torch.Size([2, 64, 8, 5])
>nn.AdaptiveAvgPool2d(1): torch.Size([2, 64, 1, 1])

AdaptivePooling(自适应池化)和General Pooling(一般池化)的区别

原文链接https://blog.csdn.net/xiyou__/article/details/121287909。
更详细的请看原文

AdaptivePooling,自适应池化层。函数通过输入原始尺寸和目标尺寸,自适应地计算核的大小和每次移动的步长。如告诉函数原来的矩阵是7x7的尺寸,我要得到3x1的尺寸,函数就会自己计算出核多大、该怎么运动。

  • AdaptivePooling的核的大小和步长是函数自己计算的,不需要人为设定;而General Pooling需要指定核的大小和步长。
  • AdaptivePooling的核是可变大小的,且步长也是动态的;而General Pooling是固定核的大小和步长的。
  • AdaptivePooling的相邻池化窗口之间是可以出现重叠的;General
    Pooling作用于图像中不重叠的区域。(也存在OverlappingPooling(重叠池化层))

你可能感兴趣的:(python,pytorch,深度学习)