torch.linalg.householder_product
-
torch.linalg.householder_product(A, tau, *, out=None) → Tensor -
Вычисляет первые
nстолбцы произведения матриц Хаусхолдера.Пусть — это или , и пусть — матрица со столбцами для при . Обозначим через вектор, полученный обнулением первых компонент и установкой в
1-го. Для вектора с , эта функция вычисляет первые столбцов матрицыгде —
m-мерная единичная матрица, и — сопряжённый транспонированный, когда комплексный, и транспонированный, когда вещественный. Результирующая матрица имеет тот же размер, что и входная матрицаA.Дополнительные сведения см. в Представление ортогональных или унитарных матриц.
Поддерживает входные данные типов float, double, cfloat и cdouble. Также поддерживает пакеты матриц, и если входные данные — пакеты матриц, то выходные данные имеют те же размерности пакета.
См. также
torch.geqrf()может быть использована вместе с этой функцией для формированияQиз разложенияqr().torch.ormqr()— это родственная функция, которая вычисляет матричное произведение произведения матриц Хаусхолдера с другой матрицей. Однако эта функция не поддерживает автоградиент.Предупреждение
Вычисления градиента определены корректно только если . Если это условие не выполняется, ошибка не будет сгенерирована, но полученный градиент может содержать
NaN.- Параметры:
- Ключевые аргументы:
-
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)
© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/1.13/generated/torch.linalg.householder_product.html