mindspore.ops.norm

mindspore.ops.norm(input_x, axis, p=2, keep_dims=False, epsilon=1e-12)[源代码]

返回给定Tensor的矩阵范数或向量范数。

\[output = sum(abs(input)**p)**(1/p)\]
参数:
  • input_x (Tensor) - 输入Tensor。数据类型必须为float16或者float32。

  • axis (Union[int, list, tuple]) - 指定要计算范数的输入维度。

  • p (int) - 范数的值。默认值:2。 p 大于等于0。

  • keep_dims (bool) - 输出Tensor是否保留原有的维度。默认值:False。

  • epsilon (float) - 用于保持数据稳定性的常量。默认值:1e-12。

返回:

Tensor,其数据类型与 input_x 相同,其维度信息取决于 axis 轴以及参数 keep_dims 。例如如果输入的大小为 (2,3,4) 轴为 [0,1] ,输出的维度为 (4,)

异常:
  • TypeError - input_x 不是Tensor。

  • TypeError - input_x 的数据类型不是float16或者float32。

  • TypeError - axis 不是int,tuple或者list。

  • TypeError - p 不是int。

  • TypeError - axis 是tuple或者list但其元素不是int。

  • TypeError - keep_dims 不是bool。

  • TypeError - epsilon 不是float。

  • ValueError - axis 的元素超出范围 (-len(input_x.shape), len(input_x.shape)) ,其中 input_x 指当前Tensor 。

  • ValueError - axis 的维度rank大于当前Tensor的维度rank。

支持平台:

Ascend GPU CPU

样例:

>>> input_x = Tensor(np.array([[[1.0, 2.0], [3.0, 4.0]], [[5.0, 6.0], [7.0, 8.0]]]).astype(np.float32))
>>> output = ops.norm(input_x, [0, 1], p=2)
>>> print(output)
[ 9.165152 10.954452]