scipy 和 numpy svd 或 eig 总是 return 相同的 singular/eigen 向量吗?
Do scipy and numpy svd or eig always return the same singular/eigen vector?
由于 SVD 分解不是唯一的(左右奇异向量对可以同时翻转它们的符号),我想知道 return 由 [=13= 编辑的 U 和 V 矩阵在多大程度上] 'deterministic' / 总是一样的吗?
我在我的机器上使用随机数组尝试了几次,它似乎总是 return 相同的东西(幸运的是),但是这会因机器而异吗?
SciPy 和 Numpy 都通过外包给 LAPACK _gesdd
例程来计算 SVD。此例程的任何确定性实现每次在具有给定 LAPACK 实现的给定机器上都会产生相同的结果,但据我所知,不能保证不同的 LAPACK 实现(即 NETLIB 与 MKL,OSX 与 Windows, 等) 将使用相同的约定。如果您的应用程序依赖于解决符号歧义的某种约定,那么在奇异向量的某种 post 处理中自己确保它是最安全的; Resolving the Sign Ambiguity in the 中给出了一种有用的方法
奇异值分解 (pdf)
由于 SVD 分解不是唯一的(左右奇异向量对可以同时翻转它们的符号),我想知道 return 由 [=13= 编辑的 U 和 V 矩阵在多大程度上] 'deterministic' / 总是一样的吗?
我在我的机器上使用随机数组尝试了几次,它似乎总是 return 相同的东西(幸运的是),但是这会因机器而异吗?
SciPy 和 Numpy 都通过外包给 LAPACK _gesdd
例程来计算 SVD。此例程的任何确定性实现每次在具有给定 LAPACK 实现的给定机器上都会产生相同的结果,但据我所知,不能保证不同的 LAPACK 实现(即 NETLIB 与 MKL,OSX 与 Windows, 等) 将使用相同的约定。如果您的应用程序依赖于解决符号歧义的某种约定,那么在奇异向量的某种 post 处理中自己确保它是最安全的; Resolving the Sign Ambiguity in the 中给出了一种有用的方法
奇异值分解 (pdf)