mindspore.nn.FractionalMaxPool3d
- class mindspore.nn.FractionalMaxPool3d(kernel_size, output_size=None, output_ratio=None, return_indices=False, _random_samples=None)[源代码]
- 在输入上应用三维分数最大池化。输出Tensor的shape可以由 output_size 和 output_ratio 其中之一确定,步长由 _random_samples 随机决定。 output_size 和 output_ratio 同时设置, output_size 会生效。 output_size 和 output_ratio 不能同时为 - None。- 分数最大池化的详细描述在 Fractional MaxPooling by Ben Graham 。 - 输入输出的数据格式可以是”NCDHW“。其中,N是批次大小,C是通道数,D是特征深度,H是特征高度,W是特征宽度。 - 参数:
- kernel_size (Union[int, tuple[int]]) - 指定池化核尺寸大小,如果为正整数,则代表池化核的深度,高和宽。如果为tuple,其值必须包含三个正整数值分别表示池化核的深度,高和宽。取值必须为正整数。 
- output_size (Union[int, tuple[int]],可选) - 目标输出大小。如果是正整数,则表示输出目标的深、高和宽。如果是tuple,其值必须包含三个正整数值分别表示目标输出的深、高和宽。为 - None时,输出大小由 output_ratio 决定。默认值:- None。
- output_ratio (Union[float, tuple[float]],可选) - 目标输出shape与输入shape的比率。通过输入shape和 output_ratio 确定输出shape。支持数据类型:float16、float32、float64,数值介于0到1之间。为None时,输出大小由 output_size 决定。默认值: - None。
- return_indices (bool,可选) - 是否返回最大值的索引值。默认值: - False。
- _random_samples (Tensor,可选) - 随机步长。支持的数据类型:float16、float32、double。shape为 \((N, C, 3)\) 或 \((1, C, 3)\) 的Tensor。数值范围[0, 1)。默认值: - None, _random_samples 的值由区间[0, 1)上的均匀分布随机生成。
 
- 输入:
- input (Tensor) - 四维或五维的Tensor,支持的数据类型:float16、float32、float64。支持shape为 \((N, C, D_{in}, H_{in}, W_{in})\) 或 \((C, D_{in}, H_{in}, W_{in})\) 。 
 
- 输出:
- y (Tensor) - 3D分数最大池化的输出,是一个Tensor。数据类型和 input 相同,shape是 \((N, C, D_{out}, H_{out}, W_{out})\) 或 \((C, D_{out}, H_{out}, W_{out})\) 。其中,\((D_{out}, H_{out}, W_{out})\) = output_size 或 \((D_{out}, H_{out}, W_{out})\) = output_ratio * \((D_{in}, H_{in}, W_{in})\) 。 
- argmax (Tensor) - 仅当 return_indices 为True时,输出最大池化的索引值。shape和输出 y 一致。 
 
- 异常:
- TypeError - input 不是四维或五维Tensor。 
- TypeError - _random_samples 不是三维Tensor。 
- TypeError - input 数据类型不是float16、float32、double。 
- TypeError - _random_samples 数据类型不是float16、float32、double。 
- TypeError - argmax 数据类型不是int32、int64。 
- TypeError - _random_samples 和 input 数据类型不相同。 
- ValueError - output_size 不是长度为3的元组。 
- ValueError - kernal_size 不是长度为3的元组。 
- ValueError - output_size 和 kernel_size 不是正数。 
- ValueError - output_size 和 output_ratio 同时为 None 。 
- ValueError - input 和 _random_samples 的第一维度大小不相等。 
- ValueError - input 和 _random_samples 第二维度大小不相等。 
- ValueError - _random_samples 第三维度大小不是3。 
 
- 支持平台:
- GPU- CPU
 - 样例: - >>> import numpy as np >>> import mindspore as ms >>> x = ms.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]), ms.float32) >>> _random_samples = ms.Tensor(np.array([0.7, 0.7, 0.7]).reshape([1, 1, 3]), ms.float32) >>> net = ms.nn.FractionalMaxPool3d(kernel_size=(1, 1, 1), output_size=(1, 1, 3), ... _random_samples=_random_samples, return_indices=True) >>> output, argmax = net(x) >>> print(output) [[[[[13. 14. 16.]]]]] >>> print(argmax) [[[[[12 13 15]]]]] >>> net = ms.nn.FractionalMaxPool3d(kernel_size=(1, 1, 1), output_ratio=(0.5, 0.5, 0.5), ... _random_samples=_random_samples, return_indices=True) >>> output, argmax = net(x) >>> print(output) [[[[[13. 16.]]]]] >>> print(argmax) [[[[[12 15]]]]]