torch.lobpcg
-
torch.lobpcg(A, k=None, B=None, X=None, n=None, iK=None, niter=None, tol=None, largest=None, method=None, tracker=None, ortho_iparams=None, ortho_fparams=None, ortho_bparams=None)[исходный код] -
Находит k наибольших (или наименьших) собственных значений и соответствующие собственные векторы симметричной обобщённой задачи на собственные значения с положительно определённой матрицей, используя безматричные методы LOBPCG.
Эта функция служит интерфейсом к следующим алгоритмам LOBPCG, выбираемым с помощью аргумента
method:method=”basic”— метод LOBPCG, представленный Эндрю Князевым, см. [Knyazev2001]. Менее устойчивый метод, который может завершиться с ошибкой, если разложение Холецкого применяется к вырожденным входным данным.method=”ortho”— метод LOBPCG с выбором ортогонального базиса [StathopoulosEtal2002]. Устойчивый метод.Поддерживаются плотные и разреженные входные данные, а также пакеты плотных матриц.
Примечание
В целом базовый метод требует меньше всего времени на одну итерацию. Однако устойчивые методы сходятся гораздо быстрее и работают стабильнее. Поэтому базовый метод обычно не рекомендуется, хотя бывают случаи, когда его использование предпочтительнее.
Предупреждение
Метод обратного распространения не поддерживает разреженные данные и комплексные числа. Он работает, только если
Bне задан (т. е.B == None). Мы активно работаем над расширением поддержки и вскоре опубликуем подробное описание алгоритмов.Предупреждение
Хотя предполагается, что
Aсимметрична,A.gradтакой не является. Чтобы гарантировать симметричностьA.gradи, следовательно,A - t * A.gradв процедурах оптимизации первого порядка, перед запускомlobpcgмы применяем следующее отображение симметризации:A -> (A + A.t()) / 2. Это отображение применяется, только если дляAтребуются градиенты.Предупреждение
Алгоритм LOBPCG неприменим, если число строк
Aменьше трёхкратного числа запрошенных собственных парn.- Параметры:
-
- A (Tensor) – входной тензор размера
-
k (целое число, необязательно) – число запрошенных собственных пар. По умолчанию — число столбцов (если указано) или
1. -
B (Tensor, необязательно) – входной тензор размера . Если
Bне указана, она считается единичной матрицей. -
X (тензор, необязательно) – входной тензор размера , где
k <= n <= m. Если указан, используется в качестве начального приближения собственных векторов. X должен быть плотным тензором. -
n (целое число, необязательно) – если не указан,
nзадаёт размер сгенерированного случайного приближения собственных векторов. Значениеnпо умолчанию —k. Если указан, любое заданное значениеnигнорируется, аnавтоматически устанавливается равным числу столбцов в . - iK (тензор, необязательно) – входной тензор размера . Если указан, используется в качестве предобусловливателя.
-
niter (int, необязательно) – максимальное число итераций. При достижении этого значения процесс итераций принудительно останавливается, и возвращается текущее приближение собственных пар. Чтобы выполнять итерации до выполнения критериев сходимости без ограничения их числа, используйте
-1. -
tol (float, необязательно) – допуск невязки для критерия остановки. Значение по умолчанию —
feps ** 0.5, гдеfeps— наименьшее ненулевое число с плавающей точкой для типа данныхAвходного тензора. -
largest (bool, необязательно) – если значение равно True, решается задача на собственные значения для наибольших собственных значений. В противном случае решается задача для наименьших собственных значений. Значение по умолчанию —
True. - method (str, необязательно) – выбор метода LOBPCG. См. описание функции выше. Значение по умолчанию — «ortho».
-
tracker (вызываемый объект, необязательно) –
функция для отслеживания процесса итераций. Если указана, она вызывается на каждом шаге итерации с экземпляром LOBPCG в качестве аргумента. Экземпляр LOBPCG хранит полное состояние процесса итераций в следующих атрибутах:
iparams,fparams,bparams— словари входных параметров со значениями целочисленного, вещественного и логического типов соответственноivars,fvars,bvars,tvars— словари переменных итерации со значениями целочисленного, вещественного, логического типов и типа Tensor соответственно.A,B,iK— входные аргументы типа Tensor.E,X,S,R— переменные итерации типа Tensor.Например:
ivars[“istep”]— текущий шаг итерацииX— текущее приближение собственных векторовE— текущее приближение собственных значенийR— текущая невязкаivars[“converged_count”]— текущее число сошедшихся собственных парtvars[“rerr”]— текущее состояние критериев сходимостиОбратите внимание: если
trackerсохраняет объекты Tensor из экземпляра LOBPCG, необходимо создавать их копии.Если
trackerустанавливаетbvars[“force_stop”] = True, процесс итераций будет принудительно остановлен. -
ortho_iparams (dict, необязательно) – различные параметры алгоритма LOBPCG при использовании
method=”ortho”. -
ortho_fparams (dict, необязательно) – различные параметры алгоритма LOBPCG при использовании
method=”ortho”. -
ortho_bparams (dict, необязательно) – различные параметры алгоритма LOBPCG при использовании
method=”ortho”.
- Возвращает:
-
тензор собственных значений размера
X (Tensor): тензор собственных векторов размера
- Тип возвращаемого значения:
-
E (Tensor)
Ссылки
[Knyazev2001] Эндрю В. Князев. (2001) На пути к оптимальному решателю задачи на собственные значения с предобусловливанием: локально оптимальный блочный метод сопряжённых градиентов с предобусловливанием. SIAM J. Sci. Comput., 23(2), 517–541. (25 страниц) https://epubs.siam.org/doi/abs/10.1137/S1064827500366124
[StathopoulosEtal2002] Андреас Статопулос и Кешен У. (2002) Процедура блочной ортогонализации с постоянными требованиями к синхронизации. SIAM J. Sci. Comput., 23(6), 2165–2182. (18 страниц) https://epubs.siam.org/doi/10.1137/S1064827500370883
[DuerschEtal2018] Джед А. Дёрш, Мэюэ Шао, Чао Ян, Мин Гу. (2018) Надёжная и эффективная реализация LOBPCG. SIAM J. Sci. Comput., 40(5), C655–C676. (22 страницы) https://arxiv.org/abs/1704.07458
© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.lobpcg.html