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)[源代码][源代码]¶
使用无矩阵 LOBPCG 方法,查找对称正定广义特征值问题的 k 个最大(或最小)特征值及其对应的特征向量。
此函数是可通过 method 参数选择的以下 LOBPCG 算法的前端
method=”basic” - Andrew Knyazev 引入的 LOBPCG 方法,参见 [Knyazev2001]。一种不太稳健的方法,当 Cholesky 应用于奇异输入时可能会失败。
method=”ortho” - 带有正交基选择的 LOBPCG 方法 [StathopoulosEtal2002]。一种稳健的方法。
支持的输入包括稠密、稀疏和批处理的稠密矩阵。
注意
一般来说,基本方法每次迭代花费的时间最少。然而,稳健方法的收敛速度快得多,并且更稳定。因此,通常不推荐使用基本方法,但在某些情况下可能更倾向于使用基本方法。
警告
反向方法不支持稀疏和复数输入。它仅在未提供 B 时(即 B == None 时)工作。我们正在积极致力于扩展,算法的细节将尽快公布。
警告
虽然假设 A 是对称的,但 A.grad 不是。为了确保 A.grad 是对称的,以便 A - t * A.grad 在一阶优化例程中是对称的,在运行 lobpcg 之前,我们执行以下对称化映射:A -> (A + A.t()) / 2。此映射仅在 A 需要梯度时执行。
- 参数
A (Tensor) – 输入张量,大小为
B (Tensor, 可选) – 输入张量,大小为 。未指定时,B 被解释为单位矩阵。
X (tensor, 可选) – 输入张量,大小为 ,其中 k <= n <= m。指定时,用作特征向量的初始近似。X 必须是稠密张量。
iK (tensor, 可选) – 输入张量,大小为 。指定时,将用作预处理器。
k (integer, 可选) – 请求的特征对数。默认为 的列数(如果指定)或 1。
n (integer, 可选) – 如果未指定 ,则 n 指定生成的随机近似特征向量的大小。 n 的默认值为 k。如果指定了 ,则 n 的值(如果指定)必须是 的列数。
tol (float, 可选) – 停止准则的残差容差。默认值为 feps ** 0.5,其中 feps 是给定输入张量 A 数据类型的最小非零浮点数。
largest (bool, 可选) – 当为 True 时,求解最大特征值的特征问题。否则,求解最小特征值的特征问题。默认值为 True。
method (str, 可选) – 选择 LOBPCG 方法。参见上面函数描述。默认为 “ortho”。
niter (int, 可选) – 最大迭代次数。达到该次数时,迭代过程将被强制停止,并返回当前的特征对近似。如果希望无限迭代直到满足收敛条件,请使用 -1。
tracker (callable, 可选) –
一个用于跟踪迭代过程的函数。指定时,在每个迭代步骤调用该函数,并将 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 存储 LOBPCG 实例中的 Tensor 对象时,它必须复制这些对象。
如果 tracker 设置 bvars[“force_stop”] = True,迭代过程将被强制停止。
ortho_iparams (dict, 可选) – 使用 method=”ortho” 时 LOBPCG 算法的各种整数参数字典。
ortho_fparams (dict, 可选) – 使用 method=”ortho” 时 LOBPCG 算法的各种浮点参数字典。
ortho_bparams (dict, 可选) – 使用 method=”ortho” 时 LOBPCG 算法的各种布尔参数字典。
- 返回值
E (Tensor): 特征值张量,大小为
X (Tensor): 特征向量张量,大小为
- 返回类型
E (Tensor)
参考文献
[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 pages) 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 pages) https://epubs.siam.org/doi/10.1137/S1064827500370883
[DuerschEtal2018] Jed A. Duersch, Meiyue Shao, Chao Yang, Ming Gu. (2018) A Robust and Efficient Implementation of LOBPCG. SIAM J. Sci. Comput., 40(5), C655-C676. (22 pages) https://epubs.siam.org/doi/abs/10.1137/17M1129830