Spec-Zone.ru › PyTorch 2.14

torch.linalg.inv

torch.linalg.inv(A, *, out=None) → Tensor [исходный код]

Вычисляет обратную матрицу, если она существует. Вызывает RuntimeError, если матрица необратима.

Пусть K\mathbb{K} — это R\mathbb{R} или C\mathbb{C}, тогда для матрицы A∈Kn×nA \in \mathbb{K}^{n \times n} её обратная матрица A−1∈Kn×nA^{-1} \in \mathbb{K}^{n \times n} (если она существует) определяется следующим образом:

A−1A=AA−1=InA^{-1}A = AA^{-1} = \mathrm{I}_n

где In\mathrm{I}_n — единичная матрица n-мерного пространства.

Обратная матрица существует тогда и только тогда, когда матрица AA обратима. В этом случае обратная матрица единственна.

Поддерживаются типы данных 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

Spec-Zone.ru

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