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]¶
使用无矩阵 LOBPCG 方法查找对称正定广义特征值问题的 k 个最大(或最小)特征值及其对应的特征向量。
此函数是以下 LOBPCG 算法的前端,可以通过 method 参数进行选择
method=”basic” - Andrew Knyazev 引入的 LOBPCG 方法,参见 [Knyazev2001]。这是一种不太鲁棒的方法,可能在对奇异输入应用 Cholesky 时失败。
method=”ortho” - 具有正交基选择 [StathopoulosEtal2002] 的 LOBPCG 方法。这是一种鲁棒的方法。
支持的输入是密集的、稀疏的和密集矩阵的批次。
注意
通常,基本方法每次迭代花费的时间最少。但是,鲁棒方法的收敛速度要快得多,并且更稳定。因此,一般不建议使用基本方法,但存在可以使用基本方法的情况。
警告
反向方法不支持稀疏和复数输入。它仅在未提供 B 时(即 B == None)有效。我们正在积极扩展,算法的详细信息将尽快公布。
警告
虽然假设 A 是对称的,但 A.grad 并非如此。为了确保 A.grad 是对称的,以便 A - t * A.grad 在一阶优化例程中是对称的,在运行 lobpcg 之前,我们执行以下对称化映射:A -> (A + A.t()) / 2。仅当 A 需要梯度时才执行此映射。
- 参数
A (Tensor) – 尺寸为 的输入张量
B (Tensor, optional) – 尺寸为 的输入张量。未指定时,B 被解释为单位矩阵。
X (tensor, optional) – 尺寸为 的输入张量,其中 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 (字典, 可选) – 使用 method=”ortho” 时,LOBPCG 算法的各种参数。
ortho_fparams (字典, 可选) – 使用 method=”ortho” 时,LOBPCG 算法的各种参数。
ortho_bparams (字典, 可选) – 使用 method=”ortho” 时,LOBPCG 算法的各种参数。
- 返回
大小为 的特征值张量
X (张量): 大小为 的特征向量张量
- 返回类型
E (张量)
参考文献
[Knyazev2001] Andrew V. Knyazev。 (2001) 朝着最优预调节特征值求解器:局部最优块预调节共轭梯度法。SIAM J. Sci. Comput.,23(2),517-541。 (25 页) https://epubs.siam.org/doi/abs/10.1137/S1064827500366124
[StathopoulosEtal2002] Andreas Stathopoulos 和 Kesheng Wu。 (2002) 带有恒定同步要求的块正交化程序。SIAM J. Sci. Comput.,23(6),2165-2182。 (18 页) https://epubs.siam.org/doi/10.1137/S1064827500370883
[DuerschEtal2018] Jed A. Duersch、Meiyue Shao、Chao Yang、Ming Gu。 (2018) LOBPCG 的鲁棒且高效的实现。SIAM J. Sci. Comput.,40(5),C655-C676。 (22 页) https://epubs.siam.org/doi/abs/10.1137/17M1129830