Spec-Zone.ru › PyTorch 2

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 эта функция синхронизирует это устройство с процессором.

Примечание

Если возможно, используйте 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)

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

Spec-Zone.ru

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