How to perform sum pooling in PyTorch. Specifically, if we have input (N, C, W_in, H_in)
and want output (N, C, W_out, H_out)
using a particular kernel_size
and stride
just like nn.Maxpool2d
?
You could use torch.nn.AvgPool1d
(or torch.nn.AvgPool2d
, torch.nn.AvgPool3d
) which are performing mean pooling - proportional to sum pooling. If you really want the summed values, you could multiply the averaged output by the pooling surface.
https://pytorch.org/docs/stable/generated/torch.nn.AvgPool2d.html#torch.nn.AvgPool2d find divisor_override.
set divisor_override=1
you'll get a sumpool
import torch
input = torch.tensor([[[1,2,3],[3,2,1],[3,4,5]]])
sumpool = torch.nn.AvgPool2d(2, stride=1, divisor_override=1)
sumpool(input)
you'll get
tensor([[[ 8, 8],
[12, 12]]])
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With