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 参考手册