Spec-Zone.ru › PyTorch 1

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 (число с плавающей точкой, необязательно) – толерантность остатка для критерия остановки. По умолчанию feps ** 0.5, где feps - наименьшее ненулевое число с плавающей запятой типа данных входного тензора A.
  • largest (логическое значение, необязательно) – если True, решает задачу нахождения собственных значений для наибольших собственных значений. В противном случае решает задачу нахождения собственных значений для наименьших собственных значений. По умолчанию True.
  • method (строка, необязательно) – выбор метода LOBPCG. См. описание функции выше. По умолчанию “ortho”.
  • niter (целое число, необязательно) – максимальное число итераций. При достижении этого значения процесс итерации останавливается, и возвращается текущее приближение собственных пар. Для бесконечной итерации, но до выполнения критерия сходимости, используйте -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 (словарь, необязательно) – различные параметры алгоритма LOBPCG при использовании method=”ortho”.
  • ortho_fparams (словарь, необязательно) – различные параметры алгоритма LOBPCG при использовании method=”ortho”.
  • ortho_bparams (словарь, необязательно) – различные параметры алгоритма LOBPCG при использовании method=”ortho”.
Возвращаемые значения:

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

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

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

E (Тензор)

Ссылки

[Knyazev2001] Andrew V. Knyazev. (2001) Toward the Optimal Preconditioned Eigensolver: Locally Optimal Block Preconditioned Conjugate Gradient Method. SIAM J. Sci. Comput., 23(2), 517-541. (25 страниц) https://epubs.siam.org/doi/abs/10.1137/S1064827500366124

[StathopoulosEtal2002] Andreas Stathopoulos and Kesheng Wu. (2002) A Block Orthogonalization Procedure with Constant Synchronization Requirements. SIAM J. Sci. Comput., 23(6), 2165-2182. (18 страниц) https://epubs.siam.org/doi/10.1137/S1064827500370883

[DuerschEtal2018] Е. А. Дюерш, Мейюэ Шао, Чао Ян, Мин Гу. (2018) Robust and Efficient Implementation of 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/1.13/generated/torch.lobpcg.html

Spec-Zone.ru

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