[AdaptiveMaxPool][AdaptiveAvgPool]自适应池化层操作
空间金字塔池化操作解放了固定输入的限制,保证了输出固定大小,在PyTorch
中使用AdaptiveMaxPool
和AdaptiveAvgPool
实现
AdaptiveMaxPool
包含了一维/二维/三维实现
一维示例
>>> import torch
>>> import torch.nn as nn
>>>
>>> input = torch.randn(1, 1, 8)
>>> input
tensor([[[ 1.6188, -0.0436, 1.8603, 0.9043, 0.1372, 0.6567, -0.5700,
0.8480]]])
>>>
>>> m = nn.AdaptiveMaxPool1d(5)
>>> m
AdaptiveMaxPool1d(output_size=5)
>>>
>>> output = m(input)
>>> output
tensor([[[1.6188, 1.8603, 0.9043, 0.6567, 0.8480]]])
>>> output.size()
torch.Size([1, 1, 5])
在定义AdaptiveMaxPool1d
对象时确定固定输出大小即可
二维示例
二维操作和一维操作一样,设置输出大小即可
>>> input = torch.randn((1, 1, 8, 8))
>>> m = nn.AdaptiveMaxPool2d((3, 3))
>>> output = m(input)
>>> output.size()
torch.Size([1, 1, 3, 3])
>>> output
tensor([[[[1.4030, 2.3893, 1.1493],
[0.8610, 1.9903, 0.9673],
[1.1998, 1.9903, 1.9642]]]])
AdaptiveAvgPool
参考:自适应平均池化层