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иULU-разложения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.
-
pivot (bool, необязательный) – Вычислять ли LU-разложение с частичным выбором ведущего элемента или обычное LU-разложение.
- Возвращает:
-
Именованный кортеж
(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