python scipy稀疏矩阵SVD,错误为ARPACK错误3:在隐式重新启动Arnoldi迭代的周期中,无法应用移位

python scipy稀疏矩阵SVD,错误为ARPACK错误3:在隐式重新启动Arnoldi迭代的周期中,无法应用移位,python,scipy,sparse-matrix,svd,arpack,Python,Scipy,Sparse Matrix,Svd,Arpack,我使用scipy对一些大数据进行稀疏矩阵svd。 matix的大小约为200000*8000000,其中1.19%为非零条目。 我使用的机器有160G内存,所以我想内存不应该是个问题 下面是我使用的一些代码: from scipy import * from scipy.sparse import * import scipy.sparse.linalg as slin from numpy import * K=1500 coom=coo_matrix((value,(row,col)),sh

我使用scipy对一些大数据进行稀疏矩阵svd。 matix的大小约为200000*8000000,其中1.19%为非零条目。 我使用的机器有160G内存,所以我想内存不应该是个问题

下面是我使用的一些代码:

from scipy import *
from scipy.sparse import *
import scipy.sparse.linalg as slin
from numpy import *
K=1500
coom=coo_matrix((value,(row,col)),shape=(M,N))
coom=coom.astype('float32')
u,s,v=slin.svds(coom,K,ncv=8*K)
错误消息如下所示:

Traceback (most recent call last):
  File "sparse_svd.py", line 35, in <module>
    u,s,v=slin.svds(coom,K,ncv=2*K+1)
  File "/usr/lib/python2.7/dist-packages/scipy/sparse/linalg/eigen/arpack/arpack.py", line 731, in svds
    eigvals, eigvec = eigensolver(XH_X, k=k, tol=tol**2)
  File "/usr/lib/python2.7/dist-packages/scipy/sparse/linalg/eigen/arpack/arpack.py", line 680, in eigsh
    params.iterate()
  File "/usr/lib/python2.7/dist-packages/scipy/sparse/linalg/eigen/arpack/arpack.py", line 278, in iterate
    raise ArpackError(self.info)
scipy.sparse.linalg.eigen.arpack.arpack.ArpackError: ARPACK error 3: No shifts could be applied during a cycle of the Implicitly restarted Arnoldi iteration. One possibility is to increase the size of NCV relative to NEV.
回溯(最近一次呼叫最后一次):
文件“sparse_svd.py”,第35行,在
u、 s,v=slin.svds(coom,K,ncv=2*K+1)
svds中的文件“/usr/lib/python2.7/dist packages/scipy/sparse/linalg/eigen/arpack/arpack.py”,第731行
eigvals,eigvec=本征解算器(XH_X,k=k,tol=tol**2)
eigsh中的文件“/usr/lib/python2.7/dist packages/scipy/sparse/linalg/eigen/arpack/arpack.py”,第680行
params.iterate()
文件“/usr/lib/python2.7/dist packages/scipy/sparse/linalg/eigen/arpack/arpack.py”,第278行,以迭代形式
引发ArpackError(self.info)
scipy.sparse.linalg.eigen.arpack.arpack.arpack错误:arpack错误3:在隐式重新启动Arnoldi迭代的循环中,无法应用移位。一种可能性是增加NCV相对于NEV的大小。
当K=1000(即#本征值=1000)时,一切正常。当我尝试K>=1250时,错误开始出现。 我还尝试了各种ncv值,仍然得到相同的错误消息

感谢您的建议和帮助。
非常感谢:)

您解决了这个问题吗?