我正在执行numpy svd
U, S, V = np.linalg.svd(A)
A的形状为:
(10000, 10000)
由于体积庞大,它给我带来了内存错误:
U, S, V = np.linalg.svd(A, full_matrices=False) # nargout=3
File "/usr/lib/python2.7/dist-packages/numpy/linalg/linalg.py", line 1319, in svd
work = zeros((lwork,), t)
MemoryError
那么我该如何为我的矩阵找到奇异值分解(SVD)呢?
type(A[0,0])
。假设它是int64
。那么 A、U 和 V 每个都需要8*10000**2
字节。这意味着你至少需要 2288 MB。再加上 Python 解释器和其他变量。也许svd
函数还需要缓存一些数据。尝试减小A
的大小,进行一些实验,然后你就会知道需要添加多少交换空间。 - Vincent