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 ]])