应用SVD会立即引发内存错误吗?
发布于 2021-01-29 17:14:25
我试图将SVD应用到经过一些文本处理(最终目的是执行潜在语义分析)后获得的矩阵(3241 x
12596)上,但我无法理解为什么会发生这种情况,因为我的64位计算机具有16GB内存。那一刻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无法处理?在此阶段,我是否可以做一些事情而无需更改方法本身?
关注者
0
被浏览
50