Spec-Zone.ru › PyTorch 2.14

torch.linalg.lu_factor

torch.linalg.lu_factor(A, *, bool pivot=True, out=None) -> (Tensor, Tensor) [исходный код]

Вычисляет компактное представление LU-разложения матрицы с частичным выбором ведущего элемента.

Эта функция вычисляет компактное представление разложения, заданного функцией torch.linalg.lu(). Если матрица квадратная, это представление можно использовать в torch.linalg.lu_solve() для решения систем линейных уравнений с общей матрицей A.

Возвращаемое разложение представлено именованным кортежем (LU, pivots). Матрица LU имеет ту же форму, что и входная матрица A. Ее верхняя и нижняя треугольные части кодируют ненулевые элементы L и U LU-разложения A.

Возвращаемая матрица перестановки представлена вектором с индексацией, начинающейся с 1. pivots[i] == j означает, что на i-м шаге алгоритма i-я строка переставляется с j-1-й строкой.

На CUDA можно использовать pivot= False. В этом случае функция возвращает LU-разложение без выбора ведущего элемента, если оно существует.

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

Примечание

Если входные данные находятся на устройстве CUDA, эта функция синхронизирует это устройство с CPU. Версию этой функции, которая не выполняет синхронизацию, см. в torch.linalg.lu_factor_ex().

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

LU-разложение почти никогда не является единственным, поскольку часто существуют различные матрицы перестановок, дающие разные LU-разложения. Поэтому на разных платформах, например в SciPy, или для входных данных на разных устройствах могут получаться различные корректные разложения.

Вычисление градиентов поддерживается только для матриц полного ранга. Если это условие не выполнено, ошибка не возникнет, но градиент может быть не конечным. Это связано с тем, что LU-разложение с выбором ведущего элемента не является дифференцируемым в этих точках.

См. также

torch.linalg.lu_solve() решает систему линейных уравнений, используя выходные данные этой функции, если входная матрица была квадратной и обратимой.

torch.lu_unpack() распаковывает тензоры, возвращаемые функцией lu_factor(), в три матрицы P, L, U, образующие разложение.

torch.linalg.lu() вычисляет LU-разложение, возможно, прямоугольной матрицы с частичным выбором ведущего элемента. Оно представляет собой композицию функций lu_factor() и torch.lu_unpack().

torch.linalg.solve() решает систему линейных уравнений. Она представляет собой композицию функций lu_factor() и lu_solve().

Параметры:

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

Именованные аргументы:
  • pivot (bool, необязательный) – Вычислять ли LU-разложение с частичным выбором ведущего элемента или обычное LU-разложение. pivot= False не поддерживается на CPU. Значение по умолчанию: True.
  • out (tuple, необязательный) – кортеж из двух тензоров, в которые записываются выходные данные. Игнорируется, если None. Значение по умолчанию: None.
Возвращает:

Именованный кортеж (LU, pivots).

Вызывает исключения:

RuntimeError – если матрица A необратима или какая-либо матрица в пакете A необратима.

Примеры:

>>> A = torch.randn(2, 3, 3)
>>> B1 = torch.randn(2, 3, 4)
>>> B2 = torch.randn(2, 3, 7)
>>> LU, pivots = torch.linalg.lu_factor(A)
>>> X1 = torch.linalg.lu_solve(LU, pivots, B1)
>>> X2 = torch.linalg.lu_solve(LU, pivots, B2)
>>> torch.allclose(A @ X1, B1)
True
>>> torch.allclose(A @ X2, B2)
True

© 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.lu_factor.html

Spec-Zone.ru

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