Spec-Zone.ru › PyTorch 2.14

torch.linalg.householder_product

torch.linalg.householder_product(A, tau, *, out=None) → Tensor [source]

Вычисляет первые n столбцов произведения матриц Хаусхолдера.

Пусть K\mathbb{K} — это R\mathbb{R} или C\mathbb{C}, а A∈Km×nA \in \mathbb{K}^{m \times n} — матрица со столбцами ai∈Kma_i \in \mathbb{K}^m для i=1,…,mi=1,\ldots,m, причем m≥nm \geq n. Обозначим через bib_i вектор, полученный обнулением первых i−1i-1 компонент вектора aia_i и присваиванием значения 1 его ii-й компоненте. Для вектора τ∈Kk\tau \in \mathbb{K}^k, где k≤nk \leq n, эта функция вычисляет первые 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 является комплексным, и транспонирование, если bb имеет вещественные значения. Выходная матрица имеет тот же размер, что и входная матрица A.

Дополнительные сведения см. в разделе Представление ортогональных или унитарных матриц.

Поддерживаются входные данные с типами float, double, cfloat и cdouble. Также поддерживаются пакеты матриц; если входные данные являются пакетами матриц, выходные данные имеют те же размеры пакета.

См. также

torch.geqrf() можно использовать вместе с этой функцией для получения Q из разложения qr().

torch.ormqr() — родственная функция, которая вычисляет произведение матрицы на произведение матриц Хаусхолдера. Однако эта функция не поддерживает autograd.

Предупреждение

Вычисление градиентов корректно только в том случае, если τi≠1∣∣ai∣∣2\tau_i \neq \frac{1}{||a_i||^2}. Если это условие не выполняется, ошибка не возникнет, но вычисленный градиент может содержать NaN.

Параметры:
  • A (Tensor) – тензор формы (*, m, n), где * — ноль или более пакетных размерностей.
  • tau (Tensor) – тензор формы (*, k), где * — ноль или более пакетных размерностей.
Именованные аргументы:

out (Tensor, необязательный) – выходной тензор. Игнорируется, если None. По умолчанию: None.

Исключения:

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)

© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.linalg.householder_product.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API