torch.linalg.inv
-
torch.linalg.inv(A, *, out=None) → Tensor[исходный код] -
Вычисляет обратную матрицу, если она существует. Вызывает
RuntimeError, если матрица необратима.Пусть — это или , тогда для матрицы её обратная матрица (если она существует) определяется следующим образом:
где — единичная матрица
n-мерного пространства.Обратная матрица существует тогда и только тогда, когда матрица обратима. В этом случае обратная матрица единственна.
Поддерживаются типы данных float, double, cfloat и cdouble. Также поддерживаются пакеты матриц; если
Aпредставляет собой пакет матриц, выходной тензор имеет такие же размеры пакета.Примечание
Если входные данные находятся на устройстве CUDA, эта функция синхронизирует устройство с CPU. Версию этой функции, которая не выполняет синхронизацию, см. в
torch.linalg.inv_ex().Примечание
По возможности используйте
torch.linalg.solve()для умножения матрицы слева на обратную, например:linalg.solve(A, B) == linalg.inv(A) @ B # When B is a matrix
По возможности всегда предпочтительнее использовать
solve(), поскольку этот метод быстрее и численно устойчивее, чем явное вычисление обратной матрицы.См. также
torch.linalg.pinv()вычисляет псевдообратную матрицу (обратную матрицу Мура — Пенроуза) для матриц любой формы.torch.linalg.solve()вычисляетA.inv() @Bс помощью численно устойчивого алгоритма.- Параметры:
-
A (Tensor) – тензор формы
(*, n, n), где*— ноль или более пакетных размерностей, содержащих обратимые матрицы. - Именованные аргументы:
-
out (Tensor, необязательный) – выходной тензор. Игнорируется, если
None. Значение по умолчанию:None. - Вызывает исключение:
-
RuntimeError – если матрица
Aили любая матрица в пакете матрицAнеобратима.
Примеры:
>>> A = torch.randn(4, 4) >>> Ainv = torch.linalg.inv(A) >>> torch.dist(A @ Ainv, torch.eye(4)) tensor(1.1921e-07) >>> A = torch.randn(2, 3, 4, 4) # Batch of matrices >>> Ainv = torch.linalg.inv(A) >>> torch.dist(A @ Ainv, torch.eye(4)) tensor(1.9073e-06) >>> A = torch.randn(4, 4, dtype=torch.complex128) # Complex matrix >>> Ainv = torch.linalg.inv(A) >>> torch.dist(A @ Ainv, torch.eye(4)) tensor(7.5107e-16, dtype=torch.float64)
© 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.inv.html