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_size
、stride
和padding
可以各自是一个整数或一个只包含一个元素的元组。- 参数
- 形状:
-
-
输入格式为: $(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.]]])