Функция linalg.slogdet
Функция linalg.slogdet вычисляет знак и натуральный логарифм
модуля определителя квадратной матрицы или пакета матриц.
Первым параметром функция принимает тензор с квадратными матрицами.
Возвращается кортеж из двух тензоров: знак определителя и логарифм
модуля определителя. Это полезно, когда определитель выходит за
пределы представимых чисел с плавающей точкой.
Синтаксис
torch.linalg.slogdet(A)
Параметры
Функция принимает следующие параметры:
- A - входной тензор с размерностью (..., n, n), где последние два измерения образуют квадратную матрицу.
Возвращаемое значение
Функция возвращает кортеж из двух тензоров:
- первый тензор содержит знак определителя (
1для положительного,-1для отрицательного,0для вырожденной матрицы); - второй тензор содержит натуральный логарифм модуля определителя.
Пример
Вычислим знак и логарифм определителя для единичной матрицы размера 2x2:
import torch
t = torch.eye(2)
sign, logdet = torch.linalg.slogdet(t)
print(sign)
print(logdet)
Результат выполнения кода:
tensor(1.)
tensor(0.)
Пример
Рассмотрим матрицу с отрицательным определителем:
import torch
t = torch.tensor([
[1, 2],
[3, 4],
])
sign, logdet = torch.linalg.slogdet(t)
print(sign)
print(logdet)
Результат выполнения кода:
tensor(-1.)
tensor(0.6931)
Пример
Вырожденная матрица даёт знак 0 и логарифм
минус бесконечность:
import torch
t = torch.tensor([
[1, 2],
[2, 4],
])
sign, logdet = torch.linalg.slogdet(t)
print(sign)
print(logdet)
Результат выполнения кода:
tensor(0.)
tensor(-inf)
Пример
Вычислим определитель для пакета матриц:
import torch
t = torch.tensor([
[[1, 2], [3, 4]],
[[5, 6], [7, 8]],
])
sign, logdet = torch.linalg.slogdet(t)
print(sign)
print(logdet)
Результат выполнения кода:
tensor([-1., -1.])
tensor([0.6931, 0.6931])