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) - 要计算的矩阵。支持数据类型为float32或float64。shape为
,其中*为零或多个批量维度。hermitian 为
True
时,暂不支持多个批量维度。
- 关键字参数:
atol (float, Tensor) - 绝对公差值。默认值:
None
。rtol (float, Tensor) - 相对公差值。默认值:
None
。hermitian (bool) - 为
True
时求解x为实对称的矩阵。默认值:False
。
- 输出:
output (Tensor): 类型与输入相同。shape为
,其中*为零或多个批量维度。
- 异常:
TypeError - hermitian 不是bool。
TypeError - x 不是Tensor。
ValueError - x 的维度小于2。
- 支持平台:
CPU
样例:
>>> import mindspore >>> from mindspore import Tensor, ops >>> x = Tensor([[4., 0.], [0., 5.]], mindspore.float32) >>> output = ops.pinv(x) >>> print(output) [[0.25 0. ] [0. 0.2 ]]