ormqr

paddle.linalg. ormqr ( x, tau, other, left=True, transpose=False ) [源代码]

计算维度为(m, n)的矩阵 C(由 other 给出)和一个矩阵 Q 的乘积, 其中 Q 由 Householder 反射系数 (x, tau) 表示。

参数

  • x (Tensor) - 输入一个或一批矩阵,类型为 Tensor。 x 的形状应为 [*, MN, K],其中 * 为零或更大的批次维度,数据类型支持 float32, float64。

  • tau (Tensor) - 输入一个或一批 Householder 反射系数,类型为 Tensor。 tau 的形状应为 [*, min(MN, K)],其中 * 为零或更大的批次维度,数据类型支持 float32, float64。

  • other (Tensor) - 输入一个或一批矩阵,类型为 Tensor。 other 的形状应为 [*, M, N],其中 * 为零或更大的批次维度,数据类型支持 float32, float64。

  • left (bool, 可选) - 决定了矩阵乘积运算的顺序。如果 left 为 True ,计算顺序为 op(Q) * other ,否则,计算顺序为 other * op(Q)。默认值: True

  • transpose (bool, 可选) - 如果为 True ,对矩阵 Q 进行共轭转置变换,否则,不对矩阵 Q 进行共轭转置变换。默认值: False

返回

Tensor,维度和数据类型都与 other 一致。

代码示例

>>> import paddle
>>> import numpy as np
>>> from paddle import  linalg

>>> input = paddle.to_tensor([[-114.6, 10.9, 1.1], [-0.304, 38.07, 69.38], [-0.45, -0.17, 62]])
>>> tau = paddle.to_tensor([1.55, 1.94, 3.0])
>>> y = paddle.to_tensor([[-114.6, 10.9, 1.1], [-0.304, 38.07, 69.38], [-0.45, -0.17, 62]])
>>> output = linalg.ormqr(input, tau, y)
>>> print(output)
Tensor(shape=[3, 3], dtype=float32, place=Place(cpu), stop_gradient=True,
    [[ 63.82712936 , -13.82312393 , -116.28614044],
    [-53.65926361 , -28.15783691 , -70.42700958 ],
    [-79.54292297 ,  24.00182915 , -41.34253311 ]])