Estoy tratando de aplicar SVD en mi matriz (3241 x 12596) que se obtuvo después de un procesamiento de texto (con el objetivo final de realizar análisis semántico latente) y no puedo entender por qué está sucediendo esto como mi máquina de 64 bits tiene 16GB de RAM En el momento en que se llama al svd(self.A)
, arroja un error. Se da el error precisa a continuación:Al aplicar SVD, ¿se produce un error de memoria instantáneamente?
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
así que he intentado usar
self.U, self.S, self.Vt = svd(self.A, full_matrices= False)
y esta vez, que arroja el siguiente error:
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
Es éste supone que es un gran tamaño, matriz que Numpy no puede manejar y ¿hay algo que pueda hacer en esta etapa sin cambiar la metodología en sí?
¿Cuánta memoria usa Python en el punto en que intenta calcular la SVD? ¿Estás ejecutando Python de 32 bits o 64 bits? –
@Ferdinand Beyer: está utilizando 380 MB cuando se bloquea. Ah! :(Estoy usando un Python de 32 bits. Voy a seguir adelante e instalar la versión de 64 bits. – Legend
@Ferdinand Beyer: ¡Eres un verdadero salvador! De alguna manera ese punto se me pasó por la mente. ¡Funciona perfectamente bien ahora! Muchas gracias mucho. – Legend