Sto provando ad applicare SVD sulla mia matrice (3241 x 12596) che è stata ottenuta dopo un po 'di elaborazione del testo (con l'obiettivo finale di eseguire l'analisi semantica latente) e non riesco a capire perché questo sta accadendo come la mia macchina a 64 bit ha 16 GB di RAM. Il momento svd(self.A)
viene chiamato, genera un errore. L'errore esatto è il seguente:L'applicazione di SVD genera istantaneamente un errore di memoria?
Traceback (most recent call last):
File ".\SVD.py", line 985, in <module>
_svd.calc()
File ".\SVD.py", line 534, in calc
self.U, self.S, self.Vt = svd(self.A)
File "C:\Python26\lib\site-packages\scipy\linalg\decomp_svd.py", line 81, in svd
overwrite_a = overwrite_a)
MemoryError
Così ho provato ad utilizzare
self.U, self.S, self.Vt = svd(self.A, full_matrices= False)
e questa volta, si getta il seguente errore:
Traceback (most recent call last):
File ".\SVD.py", line 985, in <module>
_svd.calc()
File ".\SVD.py", line 534, in calc
self.U, self.S, self.Vt = svd(self.A, full_matrices= False)
File "C:\Python26\lib\site-packages\scipy\linalg\decomp_svd.py", line 71, in svd
return numpy.linalg.svd(a, full_matrices=0, compute_uv=compute_uv)
File "C:\Python26\lib\site-packages\numpy\linalg\linalg.py", line 1317, in svd
work = zeros((lwork,), t)
MemoryError
è questo dovrebbe essere un così grande matrice che Numpy non può gestire e c'è qualcosa che posso fare in questa fase senza cambiare la metodologia stessa?
Quanta memoria è utilizzata da Python nel punto in cui tenta di calcolare SVD? Stai usando Python a 32 o 64 bit? –
@Ferdinand Beyer: utilizza 380 MB quando si blocca. Ah! :(Sto usando un Python a 32 bit, andrò avanti e installerò la versione a 64 bit – Legend
@Ferdinand Beyer: Sei un vero salvatore! In qualche modo quel punto mi ha saltato la mente, funziona perfettamente ora! Grazie – Legend