Aplicar SVD gera um erro de memória instantaneamente?
Estou tentando aplicar SVD na minha matriz (3241 x 12596) que foi obtida após algum processamento de texto (com o objetivo final de executar a Análise Semântica Latente) e não consigo entender por que isso está acontecendo, pois minha máquina de 64 bits 16GB de RAM. O momentosvd(self.A)
é chamado, gera um erro. O erro exato é dado abaixo:
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
Então eu tentei usar
self.U, self.S, self.Vt = svd(self.A, full_matrices= False)
e desta vez, lança o seguinte erro:
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
Essa deveria ser uma matriz tão grande que a Numpy não pode lidar e há algo que eu possa fazer nesta fase sem alterar a própria metodologia?