pytorch torch.nn.AdaptiveAvgPool2d() 自适应平均池化函数解析

如题:只需要给定输出特征图的大小就好,其中通道数前后不发生变化。具体如下:

AdaptiveAvgPool2d
CLASStorch.nn.AdaptiveAvgPool2d(output_size)[SOURCE]

Applies a 2D adaptive average pooling over an input signal composed of several input planes.

The output is of size H x W, for any input size. The number of output features is equal to the number of input planes.

Parameters

output_size – the target output size of the image of the form H x W. Can be a tuple (H, W) or a single H for a square image H x H. H and W can be either a int, or None which means the size will be the same as that of the input.

Examples

>>> # target output size of 5x7
>>> m = nn.AdaptiveAvgPool2d((5,7))
>>> input = torch.randn(1, 64, 8, 9)
>>> output = m(input)
>>> # target output size of 7x7 (square)
>>> m = nn.AdaptiveAvgPool2d(7)
>>> input = torch.randn(1, 64, 10, 9)
>>> output = m(input)
>>> # target output size of 10x7
>>> m = nn.AdaptiveMaxPool2d((None, 7))
>>> input = torch.randn(1, 64, 10, 9)
>>> output = m(input)
>>> input = torch.randn(1, 3, 3, 3)
>>> input
tensor([[[[ 0.6574,  1.5219, -1.3590],
          [-0.1561,  2.7337, -1.8701],
          [-0.8572,  1.0238, -1.9784]],
 
         [[ 0.4284,  1.4862,  0.3352],
          [-0.7796, -0.8020, -0.1243],
          [-1.2461, -1.7069,  0.1517]],
 
         [[ 1.4593, -0.1287,  0.5369],
          [ 0.6562,  0.0616,  0.2611],
          [-1.0301,  0.4097, -1.9269]]]])
>>> m = nn.AdaptiveAvgPool2d((2, 2))
>>> output = m(input)
>>> output
tensor([[[[ 1.1892,  0.2566],
          [ 0.6860, -0.0227]],
 
         [[ 0.0833,  0.2238],
          [-1.1337, -0.6204]],
 
         [[ 0.5121,  0.1827],
          [ 0.0243, -0.2986]]]])
>>> 0.6574+1.5219+2.7337-0.1561
4.7569
>>> 4.7569/4
1.189225
>>> 

你可能感兴趣的:(pytorch学习)