householder_product

paddle.linalg. householder_product ( x, tau, name=None ) [源代码]

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

使用本API的教程文档