mindspore.ops.pinv

查看源文件
mindspore.ops.pinv(x, *, atol=None, rtol=None, hermitian=False)[源代码]

计算矩阵的伪逆(Moore-Penrose)。

本函数通过SVD计算。如果 x=USVT ,则x的伪逆为 x+=VS+UTS+ 为对S的对角线上的每个非零元素取倒数,零保留在原位。

支持批量矩阵。若x是批量矩阵,当atol或rtol为float时,则输出具有相同的批量维度。 若atol或rtol为tensor,则其shape必须可广播到 x.svd() 返回的奇异值的shape。 若x.shape为 (B,M,N) ,atol或rtol的shape为 (K,B) ,则输出shape为 (K,B,N,M)

当hermitian为True时,暂时仅支持实数域,默认输入x为实对称矩阵,因此不会在内部检查x,并且在计算中仅使用下三角部分。 当x的奇异值(或特征值范数,hermitian=True)小于阈值( max(atol,σrtol)σ 为最大奇异值或特征值)时,将其置为零,且在计算中不使用。

若rtol和atol均未指定并且x的shape(M, N),则rtol设置为 rtol=max(M,N)εε 为x.dtype的 eps值 。 若rtol未指定且atol指定值大于零,则rtol设置为零。

说明

该函数在内部使用 svd (或 eigh , hermitian=True ), 所以和这些函数具有相同问题,详细信息请参阅svd()和eigh()中的警告。

参数:
  • x (Tensor) - 输入tensor。shape为 (,M,N) ,其中*为零或多个批量维度。 hermitianTrue 时,暂不支持多个批量维度。

关键字参数:
  • atol (float, Tensor) - 绝对容差值。默认 None

  • rtol (float, Tensor) - 相对容差值。默认 None

  • hermitian (bool) - 是否求解x为实对称的矩阵。默认 False

输出:

一个shape为 (,N,M) 的tensor。

支持平台:

CPU

样例:

>>> import mindspore
>>> x = mindspore.tensor([[4., 0.], [0., 5.]], mindspore.float32)
>>> output = mindspore.ops.pinv(x)
>>> print(output)
[[0.25 0.  ]
 [0.   0.2 ]]