ormqr
计算维度为(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 ]])