mindspore.nn.AdaptiveAvgPool3d

查看源文件
class mindspore.nn.AdaptiveAvgPool3d(output_size)[源代码]

对输入Tensor,提供三维的自适应平均池化操作。也就是说对于输入任何尺寸,指定输出的尺寸都为 (D,H,W)。但是输入和输出特征的数目不会变化。

假设输入 input 最后三维大小分别为 (inD,inH,inW),则输出的最后三维大小分别为 (outD,outH,outW)。运算如下:

od[0,outD1],oh[0,outH1],ow[0,outW1]output[od,oh,ow]=mean(input[istartD:iendD+1,istartH:iendH+1,istartW:iendW+1])where,istartD=odinDoutDiendD=(od+1)inDoutDistartH=ohinHoutHiendH=(oh+1)inHoutHistartW=owinWoutWiendW=(ow+1)inWoutW
参数:
  • output_size (Union[int, tuple]) - 指定输出特征图的尺寸,可以是个tuple (D,H,W),也可以是一个int值D来表示输出尺寸为 (D,D,D)DHW 可以是int值或者None,其中None表示输出大小与对应的输入大小相同。

输入:
  • input (Tensor) - AdaptiveAvgPool3d的输入,是4D或者5D的Tensor。数据类型:float16,float32或者float64。

输出:

Tensor,与输入 input 的数据类型相同。

异常:
  • TypeError - input 不是Tensor。

  • TypeError - input 的数据类型不是float16、float32或者float64。

  • ValueError - input 维度不是4D或者5D。

  • ValueError - output_size 的值不是正数。

支持平台:

Ascend GPU CPU

样例:

>>> import mindspore as ms
>>> import numpy as np
>>> # case 1: output_size=(3, 3, 4)
>>> output_size=(3, 3, 4)
>>> input_x_val = np.random.randn(4, 3, 5, 6, 7)
>>> input_x = ms.Tensor(input_x_val, ms.float32)
>>> net = ms.nn.AdaptiveAvgPool3d(output_size)
>>> output = net(input_x)
>>> print(output.shape)
(4, 3, 3, 3, 4)
>>> # case 2: output_size=4
>>> output_size=5
>>> input_x_val = np.random.randn(2, 3, 8, 6, 12)
>>> input_x = ms.Tensor(input_x_val, ms.float32)
>>> net = ms.nn.AdaptiveAvgPool3d(output_size)
>>> output = net(input_x)
>>> print(output.shape)
(2, 3, 5, 5, 5)
>>> # case 3: output_size=(None, 4, 5)
>>> output_size=(None, 4, 5)
>>> input_x_val = np.random.randn(4, 1, 9, 10, 8)
>>> input_x = ms.Tensor(input_x_val, ms.float32)
>>> net = ms.nn.AdaptiveAvgPool3d(output_size)
>>> output = net(input_x)
>>> print(output.shape)
(4, 1, 9, 4, 5)