mindspore.ops.adaptive_avg_pool3d

查看源文件
mindspore.ops.adaptive_avg_pool3d(input, output_size)[源代码]

对一个多平面输入信号执行三维自适应平均池化。对于任何输入尺寸,指定输出的尺寸都为 (D,H,W),但是输入和输出特征的数目不会变化。

假设输入 input 最后三维大小分别为 (Din,Hin,Win),则输出的最后三维大小分别为 (Dout,Hout,Wout),运算如下:

od[0,Dout1],oh[0,Hout1],ow[0,Wout1]output[od,oh,ow]=mean(x[Distart:Diend+1,Histart:Hiend+1,Wistart:Wiend+1])where,Distart=odDinDoutDiend=(od+1)DinDoutHistart=ohHinHoutHiend=(oh+1)HinHoutWistart=owWinWoutWiend=(ow+1)WinWout
参数:
  • input (Tensor) - adaptive_avg_pool3d的输入,是4D或者5D的Tensor。

  • output_size (Union[int, tuple]) - 指定输出特征图的尺寸,可以是个tuple (D,H,W),也可以是一个int值D来表示输出尺寸为 (D,D,D)DHW 可以是int值或者None,其中None表示输出大小与对应的输入的大小相同。

返回:

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

异常:
  • TypeError - input 不是Tensor。

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

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

  • ValueError - output_size 的值不是正数。

支持平台:

Ascend GPU CPU

样例:

>>> import mindspore
>>> import numpy as np
>>> from mindspore import Tensor, ops
>>> # case 1: output_size=(3, 3, 4)
>>> output_size=(3, 3, 4)
>>> input_val = np.random.randn(4, 3, 5, 6, 7)
>>> input = Tensor(input_val, mindspore.float32)
>>> output = ops.adaptive_avg_pool3d(input, output_size)
>>> print(output.shape)
(4, 3, 3, 3, 4)
>>> # case 2: output_size=4
>>> output_size=5
>>> input_val = np.random.randn(2, 3, 8, 6, 12)
>>> input = Tensor(input_val, mindspore.float32)
>>> output = ops.adaptive_avg_pool3d(input, output_size)
>>> print(output.shape)
(2, 3, 5, 5, 5)
>>> # case 3: output_size=(None, 4, 5)
>>> output_size=(None, 4, 5)
>>> input_val = np.random.randn(4, 1, 9, 10, 8)
>>> input = Tensor(input_val, mindspore.float32)
>>> output = ops.adaptive_avg_pool3d(input, output_size)
>>> print(output.shape)
(4, 1, 9, 4, 5)