mindspore.mint.linalg.vector_norm

查看源文件
mindspore.mint.linalg.vector_norm(x, ord=2, dim=None, keepdim=False, *, dtype=None)[源代码]

返回给定Tensor在指定维度上的向量范数。

ord 为norm的计算模式。支持下列norm模式。

ord

向量范数

2 (默认值)

2 -norm (参考最下方公式)

inf

\(max(abs(x))\)

-inf

\(min(abs(x))\)

0

\(sum(x != 0)\)

其余int或float值

\(sum(abs(x)^{ord})^{(1 / ord)}\)

警告

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

参数:
  • x (Tensor) - shape为 \((*)\) 的Tensor,其中*是零个或多个batch维度。

  • ord (Union[bool, int, float, inf, -inf], 可选) - norm的模式。行为参考上表。默认值: 2

  • dim (Union[int, List(int), Tuple(int)], 可选) - 计算向量范数的维度。默认值: None

    dim 是int,list或者tuple时,会在指定的维度上计算范数,而剩余的维度会被作为batch维度。

    dim 为None时,在计算范数之前,会将Tensor x 展平。

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

关键字参数:
  • dtype (mindspore.dtype, 可选) - 如果设置此参数,则会在执行之前将 x 转换为指定的类型,返回的Tensor类型也将为指定类型 dtype。 如果 dtypeNone ,保持 x 的类型不变。默认值: None

返回:

Tensor,在指定维度 dim 上进行范数计算的结果,与输入 x 的数据类型相同。

异常:
  • TypeError - x 不是tensor。

  • TypeError - dim 既不是int也不是由int组成的list或tuple。

  • ValueError - ord 不在[bool, int, float, inf, -inf]中。

  • ValueError - dim 中的元素有重复。

  • ValueError - dim 中的任意元素超出了范围。

支持平台:

Ascend

样例:

>>> import mindspore as ms
>>> x = ms.ops.arange(0, 12, dtype=ms.float32) - 6
>>> print(ms.mint.linalg.vector_norm(x, ord=2))
12.083046
>>> print(ms.mint.linalg.vector_norm(x, ord=float('inf')))
6.0
>>> print(ms.mint.linalg.vector_norm(x, ord=float('-inf')))
0.0
>>> print(ms.mint.linalg.vector_norm(x, ord=0))
11.0
>>> print(ms.mint.linalg.vector_norm(x, ord=4.5))
7.2243643