PyTorch torch.cholesky 関数
torch.choleskyPyTorch において対称正定行列のコレスキー分解 (Cholesky decomposition) を計算する関数です。コレスキー分解は正定行列 A を A = L * L^T と分解します。ここで L は下三角行列です。
関数定義
torch.cholesky(A, upper=False, out=None)
パラメータ:
A(Tensor): 対称正定行列を入力します。upper(bool, 省略可能): True の場合、上三角行列を返します。それ以外の場合は下三角行列を返します。デフォルトは False です。out(Tensor, 省略可能): 出力テンソルです。
戻り値:
torch.Tensor: コレスキー分解の下三角(または上三角)行列を返します。
使用例
例
import torch
# 対称正定行列を作成する
A = torch.tensor([[4.0, 2.0, 2.0],
[2.0, 5.0, 3.0],
[2.0, 3.0, 6.0]])
# コレスキー分解
L = torch.cholesky(A)
print("元の行列 A:")
print(A)
print("nコレスキー分解 (下三角行列 L):")
print(L)
print("n検証: L @ L.T = ")
print(L @ L.T)
# 対称正定行列を作成する
A = torch.tensor([[4.0, 2.0, 2.0],
[2.0, 5.0, 3.0],
[2.0, 3.0, 6.0]])
# コレスキー分解
L = torch.cholesky(A)
print("元の行列 A:")
print(A)
print("nコレスキー分解 (下三角行列 L):")
print(L)
print("n検証: L @ L.T = ")
print(L @ L.T)
出力結果は次のとおりです。
原矩阵 A:
tensor([[4., 2., 2.],
[2., 5., 3.],
[2., 3., 6.]])
Cholesky 分解 (下三角矩阵 L):
tensor([[2.0000, 0.0000, 0.0000],
[1.0000, 2.0000, 0.0000],
[1.0000, 1.0000, 2.0000]])
验证: L @ L.T =
tensor([[4., 2., 2.],
[2., 5., 3.],
[2., 3., 6.]])
例 - 上三角行列を返す
import torch
A = torch.tensor([[4.0, 2.0, 2.0],
[2.0, 5.0, 3.0],
[2.0, 3.0, 6.0]])
# 上三角行列を返す
U = torch.cholesky(A, upper=True)
print("上三角行列 U:")
print(U)
A = torch.tensor([[4.0, 2.0, 2.0],
[2.0, 5.0, 3.0],
[2.0, 3.0, 6.0]])
# 上三角行列を返す
U = torch.cholesky(A, upper=True)
print("上三角行列 U:")
print(U)
その他の拡張
Pytorch torch リファレンスマニュアル