Spec-Zone.ru › PyTorch 1

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().

Parameters:

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

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

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

Raises:

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/1.13/generated/torch.linalg.lu_factor.html

Spec-Zone.ru

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