Questions tagged «eigenvector»

3
查找大型稀疏矩阵的最小特征向量,在SciPy中比在八度中慢100倍以上
我正在尝试计算与大型对称方形稀疏矩阵(最大30000x30000)的最小特征值相对应的少数(5-500)特征向量,其中小于0.1%的特征值为非零。 我目前正在Shift-invert模式(sigma = 0.0)中使用scipy.sparse.linalg.eigsh,我通过有关该主题的各种帖子发现这是首选的解决方案。但是,在大多数情况下,最多需要1小时才能解决该问题。另一方面,如果我要求最大的特征值(系统中的秒数),则该功能非常快,这是文档中所期望的。 由于我对工作中的Matlab更加熟悉,因此我尝试在Octave中解决问题,这在短短几秒钟(不到10秒)内使用eigs(sigma = 0)给出了相同的结果。由于我想对包括特征向量计算在内的算法进行参数扫描,因此在python中也要具有这种时间增益。 我首先更改了参数(尤其是公差),但是在时间尺度上并没有太大变化。 我在Windows上使用Anaconda,但尝试将scipy(这是一个很大的痛苦)使用的LAPACK / BLAS从mkl(默认为Anaconda)切换为OpenBlas(根据文档由Octave使用),但看不到更改性能。 我无法弄清楚所使用的ARPACK是否需要更改(以及如何更改)? 我将以下代码的测试用例上传到了以下Dropbox文件夹:https ://www.dropbox.com/sh/l6aa6izufzyzqr3/AABqij95hZOvRpnnjRaETQmka?dl =0 在Python中 import numpy as np from scipy.sparse import csr_matrix, csc_matrix, linalg, load_npz M = load_npz('M.npz') evals, evecs = linalg.eigsh(M,k=6,sigma=0.0) 在八度音阶中: M=dlmread('M.txt'); M=spconvert(M); [evecs,evals] = eigs(M,6,0); 任何帮助都在申请中! 我根据评论和建议尝试了一些其他选项: 八度: eigs(M,6,0)和eigs(M,6,'sm')给我相同的结果: [1.8725e-05 1.0189e-05 7.5622e-06 7.5420e-07 -1.2239e-18 -2.5674e-16] …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.