Функция linalg.inv
Функция linalg.inv вычисляет обратную матрицу.
Первым параметром функция принимает входной тензор,
который должен представлять квадратную матрицу
или батч квадратных матриц.
Вторым параметром можно передать имя операции.
Обратная матрица A⁻¹ - это такая матрица,
при умножении на которую исходная матрица A
дает единичную матрицу. Функция полезна при решении
систем линейных уравнений, вычислении коэффициентов
регрессии и других задач линейной алгебры.
Синтаксис
tf.linalg.inv(input, [name])
Пример
Давайте вычислим обратную матрицу для квадратной
матрицы размера 2×2:
import tensorflow as tf
t = tf.constant([[1.0, 2.0], [3.0, 4.0]])
res = tf.linalg.inv(t)
print(res)
Результат выполнения кода:
tf.Tensor(
[[-2.0000002 1.0000001 ]
[ 1.5000001 -0.50000006]], shape=(2, 2), dtype=float32)
Пример
Проверим, что произведение исходной матрицы и обратной дает единичную матрицу:
import tensorflow as tf
t = tf.constant([[1.0, 2.0], [3.0, 4.0]])
inv = tf.linalg.inv(t)
res = tf.matmul(t, inv)
print(res)
Результат выполнения кода:
tf.Tensor(
[[ 1.0000000e+00 0.0000000e+00]
[-1.1920929e-07 1.0000000e+00]], shape=(2, 2), dtype=float32)
Пример
Функция также работает с батчем матриц.
Давайте вычислим обратные матрицы для батча
из двух матриц размера 2×2:
import tensorflow as tf
t = tf.constant([
[[1.0, 2.0], [3.0, 4.0]],
[[2.0, 0.0], [0.0, 2.0]]
])
res = tf.linalg.inv(t)
print(res)
Результат выполнения кода:
tf.Tensor(
[[[-2.0000002 1.0000001 ]
[ 1.5000001 -0.50000006]]
[[ 0.5 0. ]
[ 0. 0.5 ]]], shape=(2, 2, 2), dtype=float32)
Пример
Давайте вычислим обратную матрицу для матрицы
размера 3×3 с типом float64:
import tensorflow as tf
t = tf.constant([
[1.0, 2.0, 3.0],
[0.0, 1.0, 4.0],
[5.0, 6.0, 0.0]
], dtype=tf.float64)
res = tf.linalg.inv(t)
print(res)
Результат выполнения кода:
tf.Tensor(
[[-24. 18. 5.]
[ 20. -15. -4.]
[ -5. 4. 1.]], shape=(3, 3), dtype=float64)