AvgPool1d

torch.nn.AvgPool1d(kernel_size, stride=None, padding=0, ceil_mode=False, count_include_pad=True) [源代码]

对由多个输入平面组成的一维输入信号进行平均池化操作。

在最简单的情况下,对于输入大小为$(N, C, L)$、输出为$(N, C, L_{out})$kernel_size$k$的层,其输出值可以精确描述为:

$\text{out}(N_i, C_j, l) = \frac{1}{k} \sum_{m=0}^{k-1} \text{input}(N_i, C_j, \text{stride} \times l + m)$

如果 padding 不为零,那么输入会在两边各隐式地添加 padding 个零值点。

注意

当 ceil_mode=True 时,如果滑动窗口始于左填充区域或输入区域,则允许其超出边界。而那些原本应从右填充区域开始的滑动窗口则会被忽略。

参数 kernel_sizestridepadding 可以各自是一个整数或一个只包含一个元素的元组。

参数
  • kernel_size (Union[int, Tuple[int]]): 窗口大小

  • stride (Union[int, Tuple[int]]) – 窗口的步长。默认值为 kernel_size

  • padding (Union[int, Tuple[int]]) – 在输入的两侧隐式添加的零填充

  • ceil_mode (bool) – 当设置为 True 时,使用 ceil 而不是 floor 来计算输出形状

  • count_include_pad (bool) – 是否在平均计算中包含零填充(当为 True 时)

形状:
  • 输入格式为: $(N, C, L_{in})$$(C, L_{in})$

  • 输出为 $(N, C, L_{out})$$(C, L_{out})$,其中

    $L_{out} = \left\lfloor \frac{L_{in} + 2 \times \text{padding} - \text{kernel\_size}}{\text{stride}} + 1\right\rfloor$

    根据上述说明,如果 ceil_mode 为 True 并且 $(L_{out} - 1) \times \text{stride} \geq L_{in} + \text{padding}$,我们会跳过最后一个窗口,因为它会从右填充区域开始。这样会导致 $L_{out}$ 减少一个。

示例:

>>> # 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.]]])
本页目录