Функция linalg.cholesky
Функция linalg.cholesky выполняет разложение Холецкого
для симметричной положительно определённой матрицы.
Результатом является нижняя треугольная матрица L,
такая что исходная матрица A = L * L.T.
Первым параметром функция принимает тензор.
Вторым параметром можно указать верхний треугольник.
Синтаксис
torch.linalg.cholesky(input, upper=False)
Пример
Давайте выполним разложение Холецкого для симметричной положительно определённой матрицы:
import torch
t = torch.tensor([
[4.0, 2.0],
[2.0, 5.0]
])
res = torch.linalg.cholesky(t)
print(res)
Результат выполнения кода:
tensor([
[2.0000, 0.0000],
[1.0000, 2.0000]
])
Пример
Давайте выполним разложение и восстановим исходную матрицу:
import torch
t = torch.tensor([
[4.0, 2.0],
[2.0, 5.0]
])
L = torch.linalg.cholesky(t)
reconstructed = L @ L.T
print(reconstructed)
Результат выполнения кода:
tensor([
[4.0000, 2.0000],
[2.0000, 5.0000]
])
Пример
Давайте получим верхнюю треугольную матрицу с помощью параметра upper:
import torch
t = torch.tensor([
[4.0, 2.0],
[2.0, 5.0]
])
U = torch.linalg.cholesky(t, upper=True)
print(U)
Результат выполнения кода:
tensor([
[2.0000, 1.0000],
[0.0000, 2.0000]
])
Пример
Давайте применим разложение Холецкого к трёхмерной матрице:
import torch
t = torch.tensor([
[
[4.0, 2.0],
[2.0, 5.0]
],
[
[1.0, 0.5],
[0.5, 1.0]
]
])
res = torch.linalg.cholesky(t)
print(res)
Результат выполнения кода:
tensor([
[
[2.0000, 0.0000],
[1.0000, 2.0000]
],
[
[1.0000, 0.0000],
[0.5000, 0.8660]
]
])