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/2.1/generated/torch.linalg.householder_product.html