评价此页

AvgPool3d#

class torch.nn.AvgPool3d(kernel_size, stride=None, padding=0, ceil_mode=False, count_include_pad=True, divisor_override=None)[source]#

Applies a 3D 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,D,H,W)(N, C, D, H, W), output (N,C,Dout,Hout,Wout)(N, C, D_{out}, H_{out}, W_{out}) and kernel_size (kD,kH,kW)(kD, kH, kW) can be precisely described as

输出(Ni,Cj,d,h,w)=k=0kD1m=0kH1n=0kW1输入(Ni,Cj,步长[0]×d+k,步长[1]×h+m,步长[2]×w+n)kD×kH×kW\begin{aligned} \text{out}(N_i, C_j, d, h, w) ={} & \sum_{k=0}^{kD-1} \sum_{m=0}^{kH-1} \sum_{n=0}^{kW-1} \\ & \frac{\text{input}(N_i, C_j, \text{stride}[0] \times d + k, \text{stride}[1] \times h + m, \text{stride}[2] \times w + n)} {kD \times kH \times kW} \end{aligned}

如果 padding 非零,则输入在所有三个维度上隐式地填充 padding 个点。

注意

当 ceil_mode=True 时,如果滑动窗口从左侧填充或输入开始,则允许它们超出边界。从右侧填充区域开始的滑动窗口将被忽略。

注意

padding 最多应该是有效核大小的一半。

参数 kernel_sizestride 可以是

  • 单个 int —— 此时深度、高度和宽度维度都使用相同的值

  • 一个包含三个整数的 tuple —— 这种情况下,第一个整数用于深度维度,第二个整数用于高度维度,第三个整数用于宽度维度。

参数
  • kernel_size (Union[int, tuple[int, int, int]]) – 窗口的大小

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

  • padding (Union[int, tuple[int, int, int]]) – 要添加到所有三个维度的隐式零填充

  • ceil_mode (bool) – 如果为 True,则在计算输出形状时使用 ceil 而不是 floor

  • count_include_pad (bool) – 如果为 True,则在平均计算中包含零填充。

  • divisor_override (Optional[int]) – 如果指定,将用作除数,否则将使用 kernel_size

形状
  • 输入:(N,C,Din,Hin,Win)(N, C, D_{in}, H_{in}, W_{in}) 或者 (C,Din,Hin,Win)(C, D_{in}, H_{in}, W_{in})

  • 输出:(N,C,Dout,Hout,Wout)(N, C, D_{out}, H_{out}, W_{out}) 或者 (C,Dout,Hout,Wout)(C, D_{out}, H_{out}, W_{out})

    Dout=Din+2×padding[0]kernel_size[0]stride[0]+1D_{out} = \left\lfloor\frac{D_{in} + 2 \times \text{padding}[0] - \text{kernel\_size}[0]}{\text{stride}[0]} + 1\right\rfloor
    Hout=Hin+2×padding[1]kernel_size[1]stride[1]+1H_{out} = \left\lfloor\frac{H_{in} + 2 \times \text{padding}[1] - \text{kernel\_size}[1]}{\text{stride}[1]} + 1\right\rfloor
    Wout=Win+2×padding[2]kernel_size[2]stride[2]+1W_{out} = \left\lfloor\frac{W_{in} + 2 \times \text{padding}[2] - \text{kernel\_size}[2]}{\text{stride}[2]} + 1\right\rfloor

    根据上面的说明,如果 ceil_mode 为 True 且 (Dout1)×stride[0]Din+padding[0](D_{out} - 1)\times \text{stride}[0]\geq D_{in} + \text{padding}[0], 我们将跳过最后一个窗口,因为它会从填充区域开始,导致 DoutD_{out} 减少一。

    对于 WoutW_{out}HoutH_{out} 也是如此。

示例

>>> # pool of square window of size=3, stride=2
>>> m = nn.AvgPool3d(3, stride=2)
>>> # pool of non-square window
>>> m = nn.AvgPool3d((3, 2, 2), stride=(2, 1, 2))
>>> input = torch.randn(20, 16, 50, 44, 31)
>>> output = m(input)