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][source]¶
使用矩阵无关的 LOBPCG 方法求解对称正定广义特征值问题的 k 个最大(或最小)特征值及其对应的特征向量。
这是一个面向以下 LOBPCG 算法的前端函数,可通过方法参数选择:
method="basic" - 由安德烈·克尼亚泽夫提出的 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(张量)- 输入张量的大小为
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(int,可选)- 最大迭代次数。当达到时,迭代过程会硬停止,并返回当前特征对近似值。对于无限迭代但直到满足收敛标准,请使用-1。
tracker(可调用对象,可选)-
追踪迭代过程的函数。当指定时,它将在每次迭代步骤中调用,以 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”] - 当前收敛准则的状态
注意,当跟踪器从 LOBPCG 实例存储 Tensor 对象时,必须对这些对象进行复制。
如果跟踪器将 bvars[“force_stop”] 设置为 True,迭代过程将被强制停止。
ortho_iparams (dict, 可选) – 使用方法=”ortho”时 LOBPCG 算法的各种参数。
ortho_fparams (dict, 可选) – 使用方法="ortho"时 LOBPCG 算法的各种参数。
ortho_bparams (dict, 可选) – 使用方法="ortho"时 LOBPCG 算法的各种参数。
- 返回值:
大小为 的特征值张量
X (张量):大小为 的特征向量张量
- 返回类型:
E (张量)
参考文献列表
[Knyazev2001] 安德烈·V·克尼亚泽夫. (2001) 向最优预条件特征值求解器迈进:局部最优块预条件共轭梯度法. SIAM 科学计算杂志,23(2),517-541. (25 页) https://epubs.siam.org/doi/abs/10.1137/S1064827500366124
[StathopoulosEtal2002] 安德烈亚斯·斯塔索普洛斯和凯申·吴. (2002) 一种具有恒定同步要求的块正交化过程. SIAM 科学计算杂志,23(6),2165-2182. (18 页) https://epubs.siam.org/doi/abs/10.1137/S1064827500370883
[DuerschEtal2018] 詹德·A·杜尔施,梅悦·邵,赵超,顾明. (2018) LOBPCG 的鲁棒和高效实现. SIAM 科学计算杂志,40(5),C655-C676. (22 页) https://epubs.siam.org/doi/abs/10.1137/17M1129830