Spec-Zone.ru › PyTorch 2

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) [source]

Найдите 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 требует градиенты.

Параметры
  • A (Тензор) – входной тензор размера (∗,m,m)(*, m, m)
  • B (Тензор, необязательно) – входной тензор размера (∗,m,m)(*, m, m). Если не указан, B интерпретируется как единичная матрица.
  • X (тензор, необязательно) – входной тензор размера (∗,m,n)(*, m, n), где k <= n <= m. Если указан, используется как начальное приближение собственных векторов. X должен быть плотным тензором.
  • iK (тензор, необязательно) – входной тензор размера (∗,m,m)(*, m, m). Если указан, будет использован как предварительный решатель.
  • k (целое число, необязательно) – количество запрашиваемых собственных пар. По умолчанию это количество столбцов XX (если указан) или 1.
  • n (целое число, необязательно) – если XX не указан, то n задает размер сгенерированного случайного приближения собственных векторов. Значение по умолчанию для n равно k. Если XX указан, то значение n (если указано) должно быть равно количеству столбцов XX.
  • tol (float, необязательно) – остаточная погрешность для критерия остановки. По умолчанию feps ** 0.5, где feps — наименьшее ненулевое число с плавающей запятой заданного типа данных входного тензора A.
  • largest (bool, необязательно) – если True, решить задачу на собственные значения для наибольших собственных значений. В противном случае решить задачу на собственные значения для наименьших собственных значений. По умолчанию True.
  • method (str, необязательно) – выбрать метод LOBPCG. См. описание функции выше. По умолчанию “ortho”.
  • niter (int, необязательно) – максимальное количество итераций. При достижении итерационного процесса останавливается жёстко, и возвращается текущее приближение собственных пар. Для бесконечного числа итераций, но до достижения критерия сходимости, используйте -1.
  • tracker (вызываемая функция, необязательно) –

    функция для отслеживания процесса итерации. При указании она вызывается на каждом шаге итерации с экземпляром LOBPCG в качестве аргумента. Экземпляр LOBPCG содержит полное состояние итерационного процесса в следующих атрибутах:

    iparams, fparams, bparams - словари целочисленных, вещественных и логических значений входных параметров соответственно

    ivars, fvars, bvars, tvars - словари целочисленных, вещественных, логических и тензорных значений итерационных переменных соответственно.

    A, B, iK - входные тензорные аргументы.

    E, X, S, R - итерационные тензорные переменные.

    Например:

    ivars[“istep”] - текущий шаг итерации X - текущее приближение собственных векторов E - текущее приближение собственных значений R - текущий остаток ivars[“converged_count”] - текущее число сходящихся собственных пар tvars[“rerr”] - текущее состояние критерия сходимости

    Обратите внимание, что когда tracker хранит тензорные объекты из экземпляра 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 (Тензор): тензор собственных векторов размера (∗,m,k)(*, m, k)

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

E (Тензор)

Ссылки

[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://epubs.siam.org/doi/abs/10.1137/17M1129830

© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/2.1/generated/torch.lobpcg.html

Spec-Zone.ru

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