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,可选) - 矩阵分解的模式,可选 reducedcompleter ,默认值: 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]]))