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, все еще получаю то же сообщение об ошибке...

Любые предложения и помощь приветствуются. Большое спасибо:)

0 ответов

Другие вопросы по тегам