AvgPool1d — PyTorch 2.7 documentation (original) (raw)
class torch.nn.AvgPool1d(kernel_size, stride=None, padding=0, ceil_mode=False, count_include_pad=True)[source][source]¶
Applies a 1D average pooling over an input signal composed of several input planes.
In the simplest case, the output value of the layer with input size (N,C,L)(N, C, L), output (N,C,Lout)(N, C, L_{out}) and kernel_size
kkcan be precisely described as:
out(Ni,Cj,l)=1k∑m=0k−1input(Ni,Cj,stride×l+m)\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)
If padding
is non-zero, then the input is implicitly zero-padded on both sides for padding
number of points.
Note
When ceil_mode=True, sliding windows are allowed to go off-bounds if they start within the left padding or the input. Sliding windows that would start in the right padded region are ignored.
The parameters kernel_size
, stride
, padding
can each be an int
or a one-element tuple.
Parameters
- kernel_size (Union[_int,_ tuple_[_int] ]) – the size of the window
- stride (Union[_int,_ tuple_[_int] ]) – the stride of the window. Default value is
kernel_size
- padding (Union[_int,_ tuple_[_int] ]) – implicit zero padding to be added on both sides
- ceil_mode (bool) – when True, will use ceil instead of floor to compute the output shape
- count_include_pad (bool) – when True, will include the zero-padding in the averaging calculation
Shape:
- Input: (N,C,Lin)(N, C, L_{in}) or (C,Lin)(C, L_{in}).
- Output: (N,C,Lout)(N, C, L_{out}) or (C,Lout)(C, L_{out}), where
Lout=⌊Lin+2×padding−kernel_sizestride+1⌋L_{out} = \left\lfloor \frac{L_{in} + 2 \times \text{padding} - \text{kernel\_size}}{\text{stride}} + 1\right\rfloor
Per the note above, ifceil_mode
is True and (Lout−1)×stride≥Lin+padding(L_{out} - 1) \times \text{stride} \geq L_{in} + \text{padding}, we skip the last window as it would start in the right padded region, resulting inLoutL_{out} being reduced by one.
Examples:
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.]]])