Función PyTorch torch.lobpcg


Pytorch torch 参考手册Manual de referencia de PyTorch torch

torch.lobpcgEs una función en PyTorch utilizada para resolver problemas de valores propios mediante el método LOBPCG (Gradiente Conjugado Precondicionado por Bloques Localmente Óptimo). Es especialmente adecuada para el cálculo de valores propios de matrices dispersas a gran escala.

Definición de la función

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)

Parámetros:

  • A(Tensor): La matriz de entrada (debe ser definida positiva).
  • B(Tensor, opcional): Matriz de masa, utilizada para problemas de valores propios generalizados.
  • X(Tensor, opcional): Vectores propios de aproximación inicial.
  • k(int, opcional): Número de valores propios a resolver.
  • n(int, opcional): Tamaño de bloque.

Valor de retorno:

  • tuple: Devuelve una tupla de (valores propios, vectores propios).

Ejemplo de uso

Ejemplo

import torch

# Crear una matriz simétrica definida positiva
n = 100
A = torch.randn(n, n)
A = A @ A.T  # Hacerla simétrica definida positiva

# Aproximación inicial
k = 3
X = torch.randn(n, k)

# Resolución con LOBPCG
eigenvalues, eigenvectors = torch.lobpcg(A, X=X, k=k)

print("Forma de la matriz:", A.shape)
print("Valores propios:")
print(eigenvalues)

El resultado de salida es:

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

Pytorch torch 参考手册Manual de referencia de PyTorch torch

Otras extensiones