mindspore.ops.pinv
- mindspore.ops.pinv(x, *, atol=None, rtol=None, hermitian=False)[源代码]
计算矩阵的伪逆(Moore-Penrose)。
本函数通过SVD计算。如果
,则x的伪逆为 , 为对S的对角线上的每个非零元素取倒数,零保留在原位。支持批量矩阵。若x是批量矩阵,当atol或rtol为float时,则输出具有相同的批量维度。 若atol或rtol为tensor,则其shape必须可广播到 x.svd() 返回的奇异值的shape。 若x.shape为
,atol或rtol的shape为 ,则输出shape为 。当hermitian为True时,暂时仅支持实数域,默认输入x为实对称矩阵,因此不会在内部检查x,并且在计算中仅使用下三角部分。 当x的奇异值(或特征值范数,hermitian=True)小于阈值(
, 为最大奇异值或特征值)时,将其置为零,且在计算中不使用。若rtol和atol均未指定并且x的shape(M, N),则rtol设置为
, 为x.dtype的 eps值 。 若rtol未指定且atol指定值大于零,则rtol设置为零。- 参数:
x (Tensor) - 输入tensor。shape为
,其中*为零或多个批量维度。 hermitian 为True
时,暂不支持多个批量维度。
- 关键字参数:
atol (float, Tensor) - 绝对容差值。默认
None
。rtol (float, Tensor) - 相对容差值。默认
None
。hermitian (bool) - 是否求解x为实对称的矩阵。默认
False
。
- 输出:
一个shape为
的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 ]]