尝试创建numpy矩阵时出现内存错误

时间:2017-05-02 13:12:31

标签: python numpy

set.seed(1234)
n <- 100
x <- runif(n)+5
T1 <- 1
(ML <- nlm(f, p=c(0.01,0.17)))

我一直在讨论这部分程序最后一行的主要问题。文本文件可能长约7,000,000字。目前,字数/长度约为200,000。当我将文本文件剪切到单词长度变为40,000左右时,程序可以正常工作。反正有没有解决这个内存限制?谢谢你的帮助。如果我只是继续删除部分文本直到内存错误消失,那么我在程序后面部分得到的结果似乎真的很糟糕。

$minimum
[1] 227.3527

$estimate
[1] 2.420050e-07 1.768907e-01

$gradient
[1]  259.0327 -308.4809

$code
[1] 2

$iterations
[1] 12

1 个答案:

答案 0 :(得分:2)

我假设引发异常的行:

Bigram = np.zeros([len(words),len(words)])

如果len(words)为200,000,则矩阵的大小为200,000 ^ 2个整数。假设int64,这需要320 GB的内存。

假设大多数条目将保持为零,稀疏矩阵可能会有所帮助。例如,scipy's sparse matrices。在计算关节对的情况下,这个片段可能会有所帮助:

from scipy.sparse.dok import dok_matrix

Bigrams = dok_matrix((len(words), len(words)))
# Bigrams[i, j] += 1

关于代码本身,第一部分可能在scikit-learn text vectorizers处具有相对类似的实现。