pool层种类
1. AdaptiveAvgPool2d(output_size)
作者:派大鑫
链接:https://www.zhihu.com/question/282046628/answer/2649207883
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
直接上图就懂了:Global Average Pooling 对每个通道求均值nn.AdaptiveAvgPool2d(output_size) 的用处就是不管输入的大小是多少,都给转成大小为 output_size 的特征图。output_size 可以为整数或者 tuple。output_size 的形状为 (H, W),H 和 W 可以不同,如果 output_size 是一个整数,将被转换为 (int, int)。 例如:output_size = 5,会转换为(5, 5)。输入应为:(N, C, H_in, W_in) 或 (C, H_in W_in)。 这里N是batch_size,C是通道。输出 = (N, C, S_0, S_1) 或 (C, S_0, S_1)。 这里 S_0 = H,S_1 = W,C 不会改变。看例子:>>> import torch
n, c, h, w = 10, 40, 32, 32
data = torch.randn([n, c, h, w])
data.shape
torch.Size([10, 40, 32, 32])
m1 = torch.nn.AdaptiveAvgPool2d((8, 8))
preds1 = m1(data)
preds1.shape
torch.Size([10, 40, 8, 8])
m2 = torch.nn.AdaptiveAvgPool2d(4)
preds2 = m2(data)
preds2.shape
torch.Size([10, 40, 4, 4])
m3 = torch.nn.AdaptiveAvgPool2d((3, 6))
preds3 = m3(data)
preds3.shape
torch.Size([10, 40, 3, 6])参考:Understand torch.nn.AdaptiveAvgPool2d() with Examples - PyTorch Tutorial