Python scipy разреженная матрица SVD с ошибкой ARPACK ошибка 3: во время цикла неявно перезапущенной итерации Арнольди не может быть сдвигов
Я использовал scipy для создания разреженной матрицы SVD на некоторых больших данных. Размер matix составляет около 200 000*8 000 000, с ненулевыми записями в 1,19%. Машина, которую я использовал, имеет память 160 ГБ, поэтому я полагаю, что память не должна быть проблемой.
Итак, вот код, который я использовал:
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.
когда K=1000 (т.е. #eigen values =1000) все в порядке. когда я пытаюсь K>=1250, ошибка начинает появляться. Я также пробовал различные значения ncv, все еще получаю то же сообщение об ошибке...
Любые предложения и помощь приветствуются. Большое спасибо:)