Spec-Zone.ru › PyTorch 2.14

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) – входной тензор размера (∗,m,m)(*, m, m)
  • k (целое число, необязательно) – число запрошенных собственных пар. По умолчанию — число столбцов XX (если указано) или 1.
  • B (Tensor, необязательно) – входной тензор размера (∗,m,m)(*, m, m). Если B не указана, она считается единичной матрицей.
  • X (тензор, необязательно) – входной тензор размера (∗,m,n)(*, m, n), где k <= n <= m. Если указан, используется в качестве начального приближения собственных векторов. X должен быть плотным тензором.
  • n (целое число, необязательно) – если XX не указан, n задаёт размер сгенерированного случайного приближения собственных векторов. Значение n по умолчанию — k. Если XX указан, любое заданное значение n игнорируется, а n автоматически устанавливается равным числу столбцов в XX.
  • iK (тензор, необязательно) – входной тензор размера (∗,m,m)(*, m, m). Если указан, используется в качестве предобусловливателя.
  • 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”.
Возвращает:

тензор собственных значений размера (∗,k)(*, k)

X (Tensor): тензор собственных векторов размера (∗,m,k)(*, m, k)

Тип возвращаемого значения:

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API