mindspore.nn.LPPool2d
- class mindspore.nn.LPPool2d(norm_type, kernel_size, stride=None, ceil_mode=False)[源代码]
- 在一个输入Tensor上应用2D LP池化运算,可被视为组成一个2D输入平面。 - 通常,输入的shape为 \((N, C, H_{in}, W_{in})\),输出的shape为 \((N, C, H_{in}, W_{in})\),输出与输入的shape一致,公式如下: \[f(X) = \sqrt[p]{\sum_{x \in X} x^{p}}\]- 说明 - 该接口暂不支持Atlas A2 训练系列产品。 - 参数:
- norm_type (Union[int, float]) - 标准化类型,代表公式里的 \(p\),不能为0, - 如果 p = 1,得到的结果为池化核内元素之和(与平均池化成比例); 
- 如果 p = \(\infty\),得到的结果为最大池化的结果。 
 
- kernel_size (Union[int, tuple[int]]) - 池化核尺寸大小。如果为整数,则代表池化核的高和宽。如果为tuple,其值必须包含两个整数值分别表示池化核的高和宽。 
- stride (Union[int, tuple[int]]) - 池化操作的移动步长,如果为整数,则代表stride的高和宽。如果为tuple,其值必须包含两个整数值分别表示stride的高和宽。如果值为 - None,则使用默认值 kernel_size。 默认值:- None。
- ceil_mode (bool) - 若为 - True,使用ceil模式来计算输出shape。若为- False,使用floor模式来计算输出shape。默认值:- False。
 
- 输入:
- x (Tensor) - shape为 \((N, C, H_{in}, W_{in})\) 的Tensor。 
 
- 输出:
- output - LPPool2d的计算结果,shape为 \((N, C, H_{in}, W_{in})\) 的Tensor,与 输入 x 的类型一致,其中 
 \[H_{out} = \left\lfloor\frac{H_{in} - \text{kernel_size}[0]}{\text{stride}[0]} + 1\right\rfloor\]\[W_{out} = \left\lfloor\frac{W_{in} - \text{kernel_size}[1]}{\text{stride}[1]} + 1\right\rfloor\]
- 异常:
- TypeError - x 不是Tensor。 
- TypeError - kernel_size 或 stride 不是int也不是tuple。 
- TypeError - ceil_mode 不是bool。 
- TypeError - norm_type 不是float也不是int。 
- ValueError - norm_type 等于0。 
- ValueError - kernel_size 或 stride 小于1。 
- ValueError - kernel_size 或 stride 是一个长度不为2的tuple。 
- ValueError - x 的shape长度不等于4。 
 
- 支持平台:
- Ascend- GPU- CPU
 - 样例: - >>> import mindspore as ms >>> import numpy as np >>> a = ms.Tensor(np.arange(2 * 3 * 4 * 5).reshape((2, 3, 4, 5)), dtype=ms.float32) >>> net = ms.nn.LPPool2d(norm_type=1, kernel_size=3, stride=1) >>> out = net(a) >>> print(out) [[[[ 54. 63. 72.] [ 99. 108. 117.]] [[ 234. 243. 252.] [ 279. 288. 297.]] [[ 414. 423. 432.] [ 459. 468. 477.]]] [[[ 594. 603. 612.] [ 639. 648. 657.]] [[ 774. 783. 792.] [ 819. 828. 837.]] [[ 954. 963. 972.] [ 999. 1008. 1017.]]]]