Функция linalg.inv
Функция linalg.inv вычисляет обратную матрицу для квадратной матрицы или пакета квадратных матриц. Обратная матрица A⁻¹ удовлетворяет условию A * A⁻¹ = I, где I - единичная матрица. Первым параметром функция принимает тензор квадратной матрицы или пакет матриц. Вторым параметром можно передать булево значение out для указания выходного тензора.
Синтаксис
torch.linalg.inv(A, [out])
Пример
Давайте вычислим обратную матрицу для матрицы 2x2:
import torch
t = torch.tensor([
[4.0, 7.0],
[2.0, 6.0]
])
res = torch.linalg.inv(t)
print(res)
Результат выполнения кода:
tensor([
[ 0.6000, -0.7000],
[-0.2000, 0.4000]
])
Пример
Давайте проверим, что произведение матрицы на обратную даёт единичную матрицу:
import torch
t = torch.tensor([
[4.0, 7.0],
[2.0, 6.0]
])
inv_t = torch.linalg.inv(t)
res = torch.matmul(t, inv_t)
print(res)
Результат выполнения кода:
tensor([
[1.0000, 0.0000],
[0.0000, 1.0000]
])
Пример
Давайте вычислим обратные матрицы для пакета из двух матриц:
import torch
t = torch.tensor([
[
[4.0, 7.0],
[2.0, 6.0]
],
[
[1.0, 2.0],
[3.0, 4.0]
]
])
res = torch.linalg.inv(t)
print(res)
Результат выполнения кода:
tensor([
[
[ 0.6000, -0.7000],
[-0.2000, 0.4000]
],
[
[-2.0000, 1.0000],
[ 1.5000, -0.5000]
]
])
Пример
Функция выбрасывает ошибку для вырожденной матрицы с нулевым определителем:
import torch
t = torch.tensor([
[1.0, 2.0],
[2.0, 4.0]
])
res = torch.linalg.inv(t)
print(res)
Результат выполнения кода:
"RuntimeError: linalg.inv: The diagonal element 0 is zero."
Пример
Давайте используем параметр out для сохранения результата в заранее выделенный тензор:
import torch
t = torch.tensor([
[4.0, 7.0],
[2.0, 6.0]
])
out_t = torch.empty(2, 2)
torch.linalg.inv(t, out=out_t)
print(out_t)
Результат выполнения кода:
tensor([
[ 0.6000, -0.7000],
[-0.2000, 0.4000]
])
Смотрите также
-
функцию
linalg.pinv,
которая вычисляет псевдообратную матрицу -
функцию
linalg.det,
которая вычисляет определитель матрицы -
функцию
linalg.solve,
которая решает систему линейных уравнений -
функцию
linalg.matrix_power,
которая возводит матрицу в степень