汇聚层

https://zh.d2l.ai/chapter_convolutional-neural-networks/pooling.html

import torch
from torch import nn

conv = nn.Conv2d(1, 1, kernel_size=(2, 2), bias=False)
pool = nn.AvgPool2d((2, 2), stride=1)

X = torch.rand((6, 6)).reshape((1, 1, 6, 6))
h_k, w_k = conv.kernel_size
conv.weight.data[:] = (1 / (h_k * w_k))

print(conv(X) == pool(X))

tensor([[[[True, True, True, True, True],
          [True, True, True, True, True],
          [True, True, True, True, True],
          [True, True, True, True, True],
          [True, True, True, True, True]]]])

平均pooling实际上就是conv kernel的权重为1/(h_p * w_p)