cafffe是没有自适用池化层,在不写插件层的情况下只能转化为avgpool
adaptive层的信息只有input_size 和output_size
这时候需要倒回去算stride kernel_size
正向计算
output_size = ceil((input_size+2∗padding−kernel_size)/stride)+1
反向计算
padding设置为0
stride = floor(input_size/(output_size)
kernel_size = input_size−(output_size−1)*stride
当output_size 为(1,1)可以直接转化global pooling
PyTorch AdaptiveAvgPool2d官网文档
CLASS torch.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)