torch.linalg.householder_product¶
- torch.linalg.householder_product(A, tau, *, out=None) 张量¶
计算Householder矩阵乘积的前n列。
设 为 或 ,并 设 为一个矩阵,其列向量为 对于 且 。记 为由 将 个分量置零的 并将其 置为 1 的结果向量。 对于向量 且 ,此函数计算矩阵的 前 <math
其中 是 m 维单位矩阵,而 是当 为复数时的共轭转置,当 为实数时的转置。 输出矩阵的大小与输入矩阵
A相同。参见正交或酉矩阵的表示以获取更多详细信息。
支持float、double、cfloat和cdouble数据类型的输入。 还支持矩阵的批处理,如果输入是矩阵的批处理,则输出具有相同的批处理维度。
另请参阅
torch.geqrf()可以与此函数一起使用,以形成 Q 从qr()分解。torch.ormqr()是一个相关的函数,用于计算Householder矩阵的乘积与另一个矩阵的矩阵乘法。 然而,该函数不支持autograd。警告
梯度计算仅在 时才有意义。 如果不满足此条件,则不会抛出错误,但生成的梯度可能包含 NaN。
- Parameters
- Keyword Arguments
输出 (张量, 可选) – 输出张量。如果为无,则忽略。默认值:无。
- Raises
RuntimeError – 如果
A不满足要求 m >= n, 或者tau不满足要求 n >= k。
示例:
>>> A = torch.randn(2, 2) >>> h, tau = torch.geqrf(A) >>> Q = torch.linalg.householder_product(h, tau) >>> torch.dist(Q, torch.linalg.qr(A).Q) tensor(0.) >>> h = torch.randn(3, 2, 2, dtype=torch.complex128) >>> tau = torch.randn(3, 1, dtype=torch.complex128) >>> Q = torch.linalg.householder_product(h, tau) >>> Q tensor([[[ 1.8034+0.4184j, 0.2588-1.0174j], [-0.6853+0.7953j, 2.0790+0.5620j]], [[ 1.4581+1.6989j, -1.5360+0.1193j], [ 1.3877-0.6691j, 1.3512+1.3024j]], [[ 1.4766+0.5783j, 0.0361+0.6587j], [ 0.6396+0.1612j, 1.3693+0.4481j]]], dtype=torch.complex128)