Функция torch.lobpcg в PyTorch
Справочное руководство 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)
Parameters:
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
собственные значения, собственные векторы = 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
собственные значения, собственные векторы = torch.lobpcg(A, X=X, k=k)
print("Форма матрицы:", A.shape)
print("Собственные значения:")
print(eigenvalues)
Результат вывода:
矩阵形状: torch.Size([100, 100]) 特征值: tensor([105.0154, 101.8972, 98.6843])
Другие расширения