AvgPool2d
是 PyTorch 中用于实现二维平均池化的层,它对输入信号的每个通道应用 2D 平均池化。平均池化层通过计算池化窗口内元素的平均值来降低特征图的空间维度,从而减少计算量和参数数量,同时提高模型对输入变化的鲁棒性。AvgPool2d
层的输出值可以通过以下公式精确描述:out(Ni,Cj,h,w)=1kH∗kW∑m=0kH−1∑n=0kW−1input(Ni,Cj,stride[0]×h+m,stride[1]×w+n),其中 kernel_size
是窗口大小,stride
是窗口滑动步长,padding
是隐式零填充的数量。AvgPool2d
的关键参数包括:-
kernel_size
:池化窗口的大小。 -
stride
:池化窗口滑动的步长,其默认值通常等于kernel_size
。 -
padding
:在输入特征图的边缘添加的零填充的大小。 -
ceil_mode
:当为True
时,使用ceil
而不是floor
来计算输出形状。 -
count_include_pad
:当为True
时,将在平均计算中包括零填充。 -
divisor_override
:如果指定,它将用作除数,否则将使用池化区域的大小。
在 PyTorch 中,你可以使用
nn.AvgPool2d
来创建一个平均池化层。下面是一个简单的例子:Python复制
import torch
import torch.nn as nn# 创建一个2x2的输入张量
input = torch.tensor([[[1.0, 2.0], [3.0, 4.0]]])# 创建一个2x2的平均池化层
pool = nn.AvgPool2d(2)# 对输入张量进行平均池化
output = pool(input)
print(output)
在这个例子中,
nn.AvgPool2d(2)
创建了一个2x2的平均池化层。这个池化层会将输入张量中每2x2的区域内的元素取平均值,并作为输出