mindspore.mint.linalg.matrix_norm

查看源文件
mindspore.mint.linalg.matrix_norm(A, ord='fro', dim=(- 2, - 1), keepdim=False, *, dtype=None)[源代码]

返回给定Tensor在指定维度上的矩阵范数。

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

ord

矩阵范数

'fro' (默认值)

Frobenius 范数

'nuc'

Nuclear 范数

inf

\(max(sum(abs(x), dim=1))\)

-inf

\(min(sum(abs(x), dim=1))\)

1

\(max(sum(abs(x), dim=0))\)

-1

\(min(sum(abs(x), dim=0))\)

2

最大奇异值

-2

最小奇异值

警告

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

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

  • ord (Union[int, inf, -inf, 'fro', 'nuc'], 可选) - 范数的计算模式。行为参考上表。默认值: 'fro'

  • dim (Tuple(int, int), 可选) - 计算矩阵范数的维度。默认值: (-2, -1)

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

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

返回:

Tensor,在指定维度 dim 上进行范数计算的结果。

异常:
  • TypeError - dim 不是由int组成的tuple。

  • ValueError - dim 的长度不是2。

  • ValueError - ord 不在[2, -2, 1, -1, float('inf'), float('-inf'), 'fro', 'nuc']中。

  • ValueError - dim 的两个元素在标准化过后取值相同。

  • ValueError - dim 的任意元素超出索引。

说明

动态shape、动态rank和可变输入不支持在 图模式(mode=mindspore.GRAPH_MODE) 下执行。

支持平台:

Ascend

样例:

>>> import mindspore as ms
>>> A = ms.ops.arange(0, 12, dtype=ms.float32).reshape(3, 4)
>>> print(ms.mint.linalg.matrix_norm(x, ord='fro'))
22.494444
>>> print(ms.mint.linalg.matrix_norm(x, ord='nuc'))
24.364643
>>> print(ms.mint.linalg.matrix_norm(x, ord=float('inf')))
38.0
>>> print(ms.mint.linalg.matrix_norm(x, ord=float('-inf')))
6.0