现在位置: 首页 > PyTorch 教程 > 正文

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