householder_product¶
计算 Householder 矩阵乘积的前 n 列(输入矩阵为 [*,m,n] )。
该函数可以从矩阵 x (m x n) 得到向量 \(\omega_{i}\),其中前 i-1 个元素为零,第 i 个元素为 1,其余元素元素来自 x 的第 i 列。 并且使用向量 tau 可以计算 Householder 矩阵乘积的前 n 列。
\[H_i = I_m - \tau_i \omega_i \omega_i^H\]
参数¶
x (Tensor): 形状为 (*, m, n) 的张量,其中 * 是零个或多个批量维度。
tau (Tensor): 形状为 (*, k) 的张量,其中 * 是零个或多个批量维度。
name (str, 可选): 具体用法请参见 Name,一般无需设置,默认值为 None。
返回¶
Tensor, dtype 与输入张量相同, QR 分解中的 Q, \(out = q = H_1H_2H_3 ... H_K\)
代码示例¶
>>> import paddle
>>> x = paddle.to_tensor([[-1.1280, 0.9012, -0.0190],
... [ 0.3699, 2.2133, -1.4792],
... [ 0.0308, 0.3361, -3.1761],
... [-0.0726, 0.8245, -0.3812]])
>>> tau = paddle.to_tensor([1.7497, 1.1156, 1.7462])
>>> Q = paddle.linalg.householder_product(x, tau)
>>> print(Q)
Tensor(shape=[4, 3], dtype=float32, place=Place(gpu:0), stop_gradient=True,
[[-0.74969995, -0.02181768, 0.31115776],
[-0.64721400, -0.12367040, -0.21738708],
[-0.05389076, -0.37562513, -0.84836429],
[ 0.12702821, -0.91822827, 0.36892807]])