【问题标题】:Do scipy and numpy svd or eig always return the same singular/eigen vector?scipy 和 numpy svd 或 eig 是否总是返回相同的奇异/特征向量?
【发布时间】:2017-12-05 20:12:28
【问题描述】:

由于 SVD 分解不是唯一的(左右奇异向量对可以同时翻转其符号),我想知道 scipy.linalg.svd() 返回的 U 和 V 矩阵在多大程度上是“确定性的”/始终相同?

我在我的机器上用随机数组尝试了几次,它似乎总是返回相同的东西(幸运的是),但是这会因机器而异吗?

【问题讨论】:

    标签: numpy scipy linear-algebra svd eigenvector


    【解决方案1】:

    SciPy 和 Numpy 都通过外包给 LAPACK _gesdd 例程来计算 SVD。此例程的任何确定性实现每次在具有给定 LAPACK 实现的给定机器上都会产生相同的结果,但据我所知,不能保证不同的 LAPACK 实现(即 NETLIB 与 MKL,OSX 与 Windows 等)将使用相同的约定。如果您的应用程序依赖于解决符号歧义的某种约定,那么在奇异向量的某种后处理中自己确保它是最安全的; Resolving the Sign Ambiguity in the 中给出了一种有用的方法。 奇异值分解 (pdf)

    【讨论】:

      猜你喜欢
      • 2021-09-03
      • 2012-11-22
      • 2019-09-24
      • 2015-06-30
      • 2020-06-07
      • 1970-01-01
      • 2019-04-16
      • 1970-01-01
      • 2023-03-08
      相关资源
      最近更新 更多