mindspore.ops.FractionalMaxPool3DWithFixedKsize

查看源文件
class mindspore.ops.FractionalMaxPool3DWithFixedKsize(ksize, output_shape, data_format='NCDHW')[源代码]

此运算对由多个输入平面组成的输入信号进行3D分数最大池化。 最大池化操作在 \((kD, kH, kW)\) 区域中进行。其步长是随机的,大小由 output_shape 决定。

输出特征的数量等于输入平面的数量。

详细内容请参考论文 Fractional MaxPooling by Ben Graham

输入和输出的数据格式可以是"NCDHW"和"NDHWC",N是批量大小,C是通道数,D是特征深度,H是特征高度,W是特征宽度。

警告

这是一个实验性API,后续可能修改或删除。

参数:
  • ksize (Union[float, tuple]) - 池化窗口大小。可以是一个三元组,表示shape为 \((k_D, k_H, k_W)\) ,或者是一个单独的 K 表示shape为 \((K, K, K)\)

  • output_shape (Union[int, tuple]) - 目标输出shape,可以是一个三元组,表示shape为 \((D_{out}, H_{out}, W_{out})\) ,或者是一个单独的 S 表示shape为 \((S, S, S)\)

  • data_format (str,可选) - 可选的数据格式值,当前支持 "NCDHW""NHDWC" ,默认为 "NCDHW"

输入:
  • x (Tensor) - 输入Tensor,是一个4-D或者5-D的Tensor。数据类型为:float16、float32、double、int32、int64。 支持的shape \((N, C, D_{in}, H_{in}, W_{in})\) 或者 \((N, D_{in}, H_{in}, W_{in}, C)\)

  • random_samples (Tensor) - 随机步长,是一个3-D Tensor,数据类型为:float16、float32、double,值在(0, 1)之间。支持的shape为 \((N, C, 3)\)

输出:
  • y (Tensor) - 一个Tensor,与 x 具有相同的dtype,shape为 \((N, C, D_{out}, H_{out}, W_{out})\) 或者 \((N, D_{out}, H_{out}, W_{out}, C)\)

  • argmax (Tensor) - 一个Tensor,输出的索引值。与 y 具有相同的shape,dype为int32或者int64。

异常:
  • TypeError - 如果 input_x 不是一个4-D或者5-D的Tensor。

  • TypeError - 如果 random_samples 不是一个3-D的Tensor。

  • TypeError - 如果 x 的数据类型不是:float16、float32、double、int32、int64。

  • TypeError - 如果 random_samples 的数据类型不是:float16、float32、double。

  • TypeError - 如果 argmax 不是int32、int64。

  • ValueError - 如果 output_shape 不是一个元组,并且 output_shape 长度不是3。

  • ValueError - 如果 ksize 是一个元组,并且 ksize 长度不是3。

  • ValueError - 如果 output_shape 或者 ksize 中的数值不是正数。

  • ValueError - 如果 data_format 不是'NCDHW',也不是'NDHWC'。

  • ValueError - 如果 input_xrandom_samples 的第一维大小不相等。

  • ValueError - 如果 input_x and random_samples 的第二维大小不相等。

  • ValueError - 如果 random_samples 的第三维大小不是3。

支持平台:

Ascend GPU CPU

样例:

>>> import numpy as np
>>> from mindspore import Tensor, ops
>>> from mindspore import dtype as mstype
>>> x = Tensor(np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16])
...       .reshape([1, 1, 2, 2, 4]), mstype.float32)
>>> random_samples = Tensor(np.array([0.7, 0.7, 0.7]).reshape([1, 1, 3]), mstype.float32)
>>> ksize = (1, 1, 1)
>>> output_shape = (1, 1, 2)
>>> net = ops.FractionalMaxPool3DWithFixedKsize(ksize = ksize, output_shape = output_shape)
>>> output, argmax = net(x, random_samples)
>>> print(output)
[[[[[13. 16.]]]]]
>>> print(argmax)
[[[[[12 15]]]]]