对由多个输入平面组成的输入信号应用 1D 最大池化。
在最简单的情况下,具有输入尺寸 (N,C,L) 和输出尺寸 (N,C,Lout) 的图层的输出值可以精确描述为
out(Ni,Cj,k)=m=0,…,kernel_size−1maxinput(Ni,Cj,stride×k+m) 如果 padding 非零,则输入将在两侧隐式地用负无穷大填充 padding 个点。 dilation 是滑动窗口内元素之间的步长。 这个 链接 有一个不错的关于池化参数的可视化。
注意
当 ceil_mode=True 时,如果滑动窗口从左侧填充或输入开始,则允许它们超出边界。从右侧填充区域开始的滑动窗口将被忽略。
- 参数:
kernel_size (int | tuple[int]) – 滑动窗口的大小,必须大于 0。
stride (int | tuple[int]) – 滑动窗口的步长,必须大于 0。默认值为 kernel_size。
padding (int | tuple[int]) – 隐式的负无穷大填充,将在两侧添加,必须大于等于 0 且小于等于 kernel_size / 2。
dilation (int | tuple[int]) – 滑动窗口内元素之间的步长,必须大于 0。
return_indices (bool) – 如果为 True,将返回最大值的 argmax。这对于稍后的 torch.nn.MaxUnpool1d 很有用。
ceil_mode (bool) – 如果为 True,将使用 ceil 而不是 floor 来计算输出形状。这将确保输入张量的每个元素都被滑动窗口覆盖。
- 形状
输入: (N,C,Lin) 或 (C,Lin)。
输出: (N,C,Lout) 或 (C,Lout),
其中 ceil_mode = False
Lout=⌊strideLin+2×padding−dilation×(kernel_size−1)−1⌋+1 其中 ceil_mode = True
Lout=⌈strideLin+2×padding−dilation×(kernel_size−1)−1+(stride−1)⌉+1
确保最后一次池化在图像内部开始,令 Lout=Lout−1 当 (Lout−1)∗stride>=Lin+padding。
示例
>>> # pool of size=3, stride=2
>>> m = nn.MaxPool1d(3, stride=2)
>>> input = torch.randn(20, 16, 50)
>>> output = m(input)
-
forward(input)[源代码]
执行前向传播。