torch.nn.AdaptiveAvgPool2d(output_size)
功能:该函数与二维平均池化运算类似,区别主要体现在自适应上,对于任何输入大小,输出大小均为指定的H×W大小。
输入:
output_size
:指定的输出大小,可以是元组(H,W),或者是单个的数,如果是单个的数,则表示输出的高和宽尺寸一样,output_size
大小可以大于输入的图片尺寸大小。一般用法
import torch
from torch import nn
img=torch.arange(24,dtype=torch.float).reshape(1,1,4,6)
pool_1=nn.AdaptiveAvgPool2d((2,3))
pool_2=nn.AdaptiveAvgPool2d(2)
img_1=pool_1(img)
img_2=pool_2(img)
print(img)
print(img_1)
print(img_2)
输出
# 原图
tensor([[[[ 0., 1., 2., 3., 4., 5.],
[ 6., 7., 8., 9., 10., 11.],
[12., 13., 14., 15., 16., 17.],
[18., 19., 20., 21., 22., 23.]]]])
# 输出大小指定为(2,3)
tensor([[[[ 3.5000, 5.5000, 7.5000],
[15.5000, 17.5000, 19.5000]]]])
# 输出大小指定为(2,2)
tensor([[[[ 4., 7.],
[16., 19.]]]])
当output_size
指定为1时,相当于全局平均池化
import torch
from torch import nn
img=torch.arange(48,dtype=torch.float).reshape(1,2,4,6)
pool=nn.AdaptiveAvgPool2d(1)
img_1=pool(img)
print(img_1)
输出
# 不同通道分别做池化运算
tensor([[[[11.5000]],
[[35.5000]]]])
nn.AdaptiveAvgPool2d():https://pytorch.org/docs/stable/generated/torch.nn.AdaptiveAvgPool2d.html?highlight=avgpool2d#torch.nn.AdaptiveAvgPool2d