【发布时间】:2015-08-09 21:45:52
【问题描述】:
我正在使用来自 teh gensim 框架的 doc2vec 模型来表示一个包含 1550 万个短文档(最多 300 个单词)的语料库:
gensim.models.Doc2Vec(sentences, size=400, window=10, min_count=1, workers=8 )
创建向量后,有超过 18 000 000 个向量表示单词和文档。
我想为给定项目找到最相似的项目(单词或文档):
similarities = model.most_similar(‘uid_10693076’)
但是在计算相似度时我得到一个 MemoryError:
Traceback (most recent call last):
File "article/test_vectors.py", line 31, in <module>
similarities = model.most_similar(item)
File "/usr/local/lib/python2.7/dist-packages/gensim/models/word2vec.py", line 639, in most_similar
self.init_sims()
File "/usr/local/lib/python2.7/dist-packages/gensim/models/word2vec.py", line 827, in init_sims
self.syn0norm = (self.syn0 / sqrt((self.syn0 ** 2).sum(-1))[..., newaxis]).astype(REAL)
我有一台带有 60GB Ram 和 70GB swap 的 Ubuntu 机器。我检查了内存分配(在 htop 中),我观察到内存从未被完全使用过。我还将python中可能锁定在内存中的最大地址空间设置为无限制:
resource.getrlimit(resource.RLIMIT_MEMLOCK)
有人能解释一下这个 MemoryError 的原因吗?在我看来,可用内存应该足以进行此计算。可能是 python 或 OS 中的一些内存限制?
提前致谢!
【问题讨论】:
标签: python memory gensim word2vec