我正在使用来自 teh gensim 框架的 doc2vec 模型来表示 15 500 000 个短文档(最多 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或操作系统中可能有一些内存限制吗?
提前致谢!