快捷键

torch.linalg.householder_product

torch.linalg.householder_product(A, tau, *, out=None) Tensor

计算 Householder 矩阵乘积的前 n 列。

K\mathbb{K}R\mathbb{R}C\mathbb{C} ,令 AKm×nA \in \mathbb{K}^{m \times n} 为一个矩阵,其列向量由 aiKma_i \in \mathbb{K}^m 组成,对应于 i=1,,mi=1,\ldots,m ,其中 mnm \geq n 。记 bib_i 为零化 aia_i 的前 i1i-1 个分量并将第 ii 个分量设为 1 得到的向量。对于具有 knk \leq n 的向量 τKk\tau \in \mathbb{K}^k ,此函数计算矩阵的前 nn

H1H2...HkwithHi=ImτibibiHH_1H_2 ... H_k \qquad\text{with}\qquad H_i = \mathrm{I}_m - \tau_i b_i b_i^{\text{H}}

其中 Im\mathrm{I}_m 是 m 维单位矩阵, bHb^{\text{H}} 是复数时的共轭转置,当 bb 是实数时为转置。输出矩阵与输入矩阵 A 大小相同。

请参阅正交或酉矩阵的表示以获取更多详细信息。

支持浮点数、双精度浮点数、复浮点数和复双精度浮点数的数据类型输入。也支持矩阵批处理,如果输入是矩阵批处理,则输出具有相同的批处理维度。

参见

torch.geqrf() 可以与该函数一起使用,以从 qr() 分解中形成 Q。

torch.ormqr() 是一个计算 Householder 矩阵乘积与另一个矩阵矩阵乘积的相关函数。然而,该函数不支持 autograd。

警告

只有当 τi1ai2\tau_i \neq \frac{1}{||a_i||^2} 条件满足时,梯度计算才有意义。如果这个条件不满足,不会抛出错误,但产生的梯度可能包含 NaN。

参数:
  • A(张量)- 形状为(*, m, n)的张量,其中*表示零个或多个批处理维度。

  • tau(张量)- 形状为(*, k)的张量,其中*表示零个或多个批处理维度。

关键字参数:

out(张量,可选)- 输出张量。如果为 None 则忽略。默认:None。

引发:

运行时错误 - 如果 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)

© 版权所有 PyTorch 贡献者。

使用 Sphinx 构建,并使用 Read the Docs 提供的主题。

文档

PyTorch 的全面开发者文档

查看文档

教程

深入了解初学者和高级开发者的教程

查看教程

资源

查找开发资源并获得您的疑问解答

查看资源