PyTorch torch.lobpcg 関数
torch.lobpcgは、PyTorch で LOBPCG(Locally Optimal Block Preconditioned Conjugate Gradient)法を使用して固有値問題を解くための関数です。特に大規模疎行列の固有値計算に適しています。
関数定義
torch.lobpcg(A, B=None, X=None, k=None, n=None, tol=None, maxiter=None, largest=None, method=None, tracker=None, ortho_iparams=None, ortho_fparams=None, ortho_cparams=None)
パラメータ:
A(Tensor): 入力行列(正定値でなければならない)。B(Tensor, オプション): 一般化固有値問題に使用する質量行列。X(Tensor, オプション): 初期近似固有ベクトル。k(int, オプション): 解く固有値の数。n(int, オプション): ブロックサイズ。
戻り値:
tuple: (固有値, 固有ベクトル) のタプルを返します。
使用例
例
import torch
# 対称正定値行列を作成
n = 100
A = torch.randn(n, n)
A = A @ A.T # 対称正定値にする
# 初期近似
k = 3
X = torch.randn(n, k)
# LOBPCG で解く
eigenvalues, eigenvectors = torch.lobpcg(A, X=X, k=k)
print("行列形状:", A.shape)
print("固有値:")
print(eigenvalues)
# 対称正定値行列を作成
n = 100
A = torch.randn(n, n)
A = A @ A.T # 対称正定値にする
# 初期近似
k = 3
X = torch.randn(n, k)
# LOBPCG で解く
eigenvalues, eigenvectors = torch.lobpcg(A, X=X, k=k)
print("行列形状:", A.shape)
print("固有値:")
print(eigenvalues)
出力結果は次のとおりです:
矩阵形状: torch.Size([100, 100]) 特征值: tensor([105.0154, 101.8972, 98.6843])
その他の拡張
Pytorch torch リファレンスマニュアル