Spec-Zone.ru › PyTorch 2

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 эта функция синхронизирует это устройство с процессором. Для версии этой функции, которая не выполняет синхронизацию, см. 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 (Тензор) – тензор формы (*, m, n), где * — это ноль или более размерностей пакета.

Ключевые аргументы
  • pivot (bool, необязательно) – Выполнять LU-разложение с частичным выбором опор или стандартное LU-разложение. pivot= False не поддерживается на CPU. По умолчанию: True.
  • out (кортеж, необязательно) – кортеж из двух тензоров для записи результата. Игнорируется, если 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)
>>> A_factor = torch.linalg.lu_factor(A)
>>> X1 = torch.linalg.lu_solve(A_factor, B1)
>>> X2 = torch.linalg.lu_solve(A_factor, B2)
>>> torch.allclose(A @ X1, B1)
True
>>> torch.allclose(A @ X2, B2)
True

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

Spec-Zone.ru

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