• 文档 >
  • torch >
  • torch.lobpcg
快捷键

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(张量)- 输入张量的大小为 (,m,m)(*, m, m)

  • B(张量,可选)- 大小为 (,m,m)(*, m, m) 的输入张量。当未指定时,B 被视为单位矩阵。

  • X(张量,可选)- 大小为 (,m,n)(*, m, n) 的输入张量,其中 k <= n <= m。当指定时,它用作特征向量的初始近似。X 必须是一个密集张量。

  • iK(张量,可选)- 大小为 (,m,m)(*, m, m) 的输入张量。当指定时,它将用作预条件器。

  • k(整数,可选)- 请求的特征对的数量。默认值是 XX 列的数量(当指定时)或 1。

  • n(整数,可选)- 如果未指定 XX ,则 n 指定生成随机近似特征向量的大小。n 的默认值是 k。如果指定了 XX ,则 n(当指定时)必须是 XX 列的数量。

  • 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 算法的各种参数。

返回值:

大小为 (,k)(*, k) 的特征值张量

X (张量):大小为 (,m,k)(*, m, k) 的特征向量张量

返回类型:

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


© 版权所有 PyTorch 贡献者。

使用 Sphinx 构建,并使用 Read the Docs 提供的主题。

文档

PyTorch 的全面开发者文档

查看文档

教程

深入了解初学者和高级开发者的教程

查看教程

资源

查找开发资源并获得您的疑问解答

查看资源