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 (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”.
- Возвращаемое значение
-
тензор собственных значений размера
X (Тензор): тензор собственных векторов размера
- Тип возвращаемого значения
-
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