对由多个输入平面组成的输入信号进行1D平均池化操作。
在最简单的情况下,具有输入尺寸 (N,C,L) 的层,输出尺寸为 (N,C,Lout) 和 kernel_size k 的输出值可以精确描述为:
out(Ni,Cj,l)=k1m=0∑k−1input(Ni,Cj,stride×l+m) 如果 padding 非零,则输入在两侧隐式地用 padding 个点进行零填充。
注意
当 ceil_mode=True 时,如果滑动窗口从左侧填充或输入开始,则允许它们超出边界。从右侧填充区域开始的滑动窗口将被忽略。
注意
padding 最多应该是有效核大小的一半。
参数 kernel_size, stride, padding 都可以是 int 类型或一个单元素的元组。
- 参数:
kernel_size (int | tuple[int]) – 窗口的大小
stride (int | tuple[int]) – 窗口的步长。默认值为 kernel_size
padding (int | tuple[int]) – 添加到两边的隐式零填充
ceil_mode (bool) – 当为 True 时,将使用 ceil 而不是 floor 来计算输出形状
count_include_pad (bool) – 如果为 True,则将零填充包含在平均计算中
- 形状
输入: (N,C,Lin) 或 (C,Lin)。
输出: (N,C,Lout) 或 (C,Lout),其中:
Lout=⌊strideLin+2×padding−kernel_size+1⌋ 根据上面的说明,如果 ceil_mode 为 True 并且 (Lout−1)×stride≥Lin+padding,我们将跳过最后一个窗口,因为它将从右侧填充区域开始,导致 Lout 减少一。
示例
>>> # pool with window of size=3, stride=2
>>> m = nn.AvgPool1d(3, stride=2)
>>> m(torch.tensor([[[1., 2, 3, 4, 5, 6, 7]]]))
tensor([[[2., 4., 6.]]])
-
forward(input)[源代码]
执行前向传播。
- 返回类型:
张量