mindspore.mint.linalg.qr
- mindspore.mint.linalg.qr(A, mode='reduced')
对输入矩阵进行正交分解:\(A = QR\)。
其中 A 为输入Tensor,维度至少为2, A 可以表示为正交矩阵 Q 与上三角矩阵 R 的乘积形式。
警告
这是一个实验性API,后续可能修改或删除。
- 参数:
A (Tensor) - 计算的矩阵,A 至少是两维的。
mode (str,可选) - 矩阵分解的模式,可选
reduced
、complete
、r
,默认值:reduced
。"reduced"
:对于输入 \(A(*, m, n)\) 输出简化大小的 \(Q(*, m, k)\),\(R(*, k, n)\),其中k为m, n的最小值。"complete"
:对于输入 \(A(*, m, n)\) 输出完整大小的 \(Q(*, m, m)\),\(R(*, m, n)\)。"r"
:仅计算reduced场景下的 \(R(*, k, n)\),其中k为m和n的最小值,返回Q为空tensor。
- 返回:
Q (Tensor) - shape为 \(Q(*, m, k)\) 或 \((*, m, n)\),与 A 具有相同的dtype。
R (Tensor) - shape为 \(Q(*, k, n)\) 或 \((*, m, n)\),与 A 具有相同的dtype。
- 异常:
TypeError - 如果 A 不是tensor。
TypeError - 如果 A 的dtype不是float32。
ValueError - 如果 A 不为空并且它的维度小于2维。
- 支持平台:
Ascend
样例:
>>> import mindspore >>> import numpy as np >>> from mindspore import Tensor, mint >>> x = Tensor(np.array([[1.0, 1.0, 2.0, 4.0], [1.0, 1.0, 2.0, 4.0]]), mindspore.float32) >>> output = mint.linalg.qr(x) >>> print(output) (Tensor(shape=[2, 2], dtype=Float32, value= [[-7.07106829e-01, -7.07106769e-01], [-7.07106769e-01, 7.07106829e-01]]), Tensor(shape=[2, 4], dtype=Float32, value= [[-1.41421354e+00, -1.41421354e+00, -2.82842731e+00, -5.65685463e+00], [ 0.00000000e+00, 3.42285418e-08, 0.00000000e+00, 0.00000000e+00]]))