我正在执行 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?
最佳答案
一些小tips: 关闭计算机上打开的所有其他内容。通过将不再需要的变量设置为 None 来删除程序中所有不必要的内存占用。假设您之前使用大字典 D 进行某些计算,但不再需要它,请设置 D = None。尝试使用 dtype=np.int32 或 dtype=np.float32 初始化您的 numpy 数组以降低内存需求。
根据您需要 SVD 的用途,您还可以查看 python 的 scikit-learn 包,它们支持许多分解方法,例如 PCA 和 SVD 以及稀疏矩阵支持。
关于python - numpy svd 中的内存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21180298/