mindspore.ops.cond

查看源文件
mindspore.ops.cond(A, p=None)[源代码]

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

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

p

矩阵范数

向量范数

None (默认值)

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

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

'fro'

Frobenius norm

不支持

'nuc'

nuclear norm

不支持

inf

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

\(max(abs(x))\)

-inf

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

\(min(abs(x))\)

0

不支持

\(sum(x != 0)\)

1

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

参考最下方公式

-1

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

参考最下方公式

2

最大奇异值

参考最下方公式

-2

最小奇异值

参考最下方公式

其余int或float值

不支持

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

说明

当前暂不支持复数。

参数:
  • A (Tensor) - shape为 \((*, n)\) 或者 \((*, m, n)\) 的Tensor,其中*是零个或多个batch维度。 如果 p 是 Union[1, -1, inf, -inf, ‘fro’, ‘nuc’] 之一, 函数将使用 mindspore.ops.MatrixInverse , 因此,\((*, m, n)\) 必须为方块矩阵并且可逆。

  • p (Union[int, float, inf, -inf, ‘fro’, ‘nuc’], 可选) - norm的模式。行为参考上表。默认值: None

返回:

Tensor,进行条件数计算的结果,与输入 A 的数据类型相同。

异常:
  • TypeError - A 是一个向量并且 p 是str类型。

  • ValueError - A 是一个矩阵并且 p 不是有效的取值。

  • ValueError - A 是一个矩阵并且 p 为一个取值不为[1, -1, 2, -2]之一的整型。

支持平台:

GPU CPU

样例:

>>> import mindspore as ms
>>> x = ms.Tensor([[1.0, 0.0, -1.0], [0.0, 1.0, 0.0], [1.0, 0.0, 1.0]])
>>> print(ms.ops.cond(x))
1.4142
>>> print(ms.ops.cond(x, 'fro'))
3.1622777