mindspore.nn.LPPool1d
- class mindspore.nn.LPPool1d(norm_type, kernel_size, stride=None, ceil_mode=False)[源代码]
在一个输入Tensor上应用1D LP池化运算,可被视为组成一个1D输入平面。
通常,输入的shape为 \((N_{in}, C_{in}, L_{in})\) 或 \((C_{in}, L_{in})\),输出的shape为 \((N_{out}, C_{out}, L_{out})\) 或 \((C_{out}, L_{out})\),输出与输入的shape一致,公式如下:
\[f(X) = \sqrt[p]{\sum_{x \in X} x^{p}}\]- 参数:
norm_type (Union[int, float]) - 标准化类型,代表公式里的p,不能为0,
如果 p = 1,得到的结果为池化核内元素之和(与平均池化成比例);
如果 p = \(\infty\),得到的结果为最大池化的结果。
kernel_size (int) - 池化核的尺寸大小。
stride (int) - 池化操作的移动步长,如果为整数,则代表stride的高和宽。如果为tuple,其值必须包含两个整数值分别表示stride的高和宽。如果值为None,则使用默认值 kernel_size。默认值:
None
。ceil_mode (bool) - 若为True,使用ceil来计算输出shape。若为False,使用floor来计算输出shape。默认值:False。
- 输入:
x (Tensor) - shape为 \((N_{in}, C_{in}, L_{in})\) 或 \((C_{in}, L_{in})\) 的Tensor。
- 输出:
output - LPPool1d的计算结果,shape为 \((N_{out}, C_{out}, L_{out})\) 或 \((C_{out}, L_{out})\) 的Tensor,与输入 x 的类型一致,其中:
\[L_{out} = \left\lfloor\frac{L_{in} - \text{kernel_size}}{\text{stride}} + 1\right\rfloor\]- 异常:
TypeError - x 不是Tensor。
TypeError - kernel_size 或 stride 不是int。
TypeError - ceil_mode 不是bool。
TypeError - norm_type 不是float也不是int。
ValueError - norm_type 等于0。
ValueError - kernel_size 或 stride 小于1。
ValueError - x 的shape长度不等于2或3。
- 支持平台:
Ascend
GPU
CPU
样例:
>>> import mindspore as ms >>> import mindspore.nn as nn >>> from mindspore import Tensor >>> import numpy as np >>> a = Tensor(np.arange(2 * 3 * 4).reshape((2, 3, 4)), dtype=ms.float32) >>> net = nn.LPPool1d(norm_type=1, kernel_size=3, stride=1) >>> out = net(a) >>> print(out) [[[ 3. 6.] [15. 18.] [27. 30.]] [[39. 42.] [51. 54.] [63. 66.]]]