Применение SVD мгновенно выдает ошибку памяти?

Я пытаюсь применить SVD к моей матрице (3241 x 12596), которая была получена после некоторой обработки текста (с конечной целью выполнения скрытого семантического анализа), и я не могу понять, почему это происходит, поскольку мои 64 -битная машина имеет 16 ГБ ОЗУ. В момент вызова svd (self.A) выдается ошибка. Точная ошибка приведена ниже:

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

Итак, я попытался использовать

self.U, self.S, self.Vt = svd(self.A, full_matrices= False)

, и на этот раз он выдает следующую ошибку:

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

Предполагается, что это такая большая матрица, которую Numpy не может обработать, и есть ли что-то, что я могу сделать на этом этапе без изменения самой методологии?

6
задан Legend 22 August 2011 в 06:28
поделиться