PyTorch torch.lobpcg 関数


Pytorch torch 参考手册Pytorch torch リファレンスマニュアル

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)

出力結果は次のとおりです:

矩阵形状: torch.Size([100, 100])
特征值:
tensor([105.0154, 101.8972,  98.6843])

Pytorch torch 参考手册Pytorch torch リファレンスマニュアル

その他の拡張