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