首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Doc2vec MemoryError

Doc2vec MemoryError
EN

Stack Overflow用户
提问于 2015-05-27 16:53:24
回答 1查看 4.1K关注 0票数 6

我正在使用来自teh gensim框架的doc2vec模型来表示一个包含1550万个短文档(最多300个单词)的语料库:

代码语言:javascript
复制
gensim.models.Doc2Vec(sentences, size=400, window=10, min_count=1, workers=8 )

在创建向量之后,有超过18000个矢量代表文字和文档。

我想为某一特定项目找到最相似的项目(文字或文件):

代码语言:javascript
复制
 similarities = model.most_similar(‘uid_10693076’)

但是,当计算出相似点时,我得到了一个MemoryError:

代码语言:javascript
复制
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) 

我有一个60 and内存和70 and交换的Ubuntu机器。我检查了内存分配(在htop中),并注意到内存从未被完全使用过。我还将锁在python内存中的最大地址空间设置为无限:

代码语言:javascript
复制
resource.getrlimit(resource.RLIMIT_MEMLOCK)

有人能解释一下MemoryError的原因吗?在我看来,可用的内存应该足够进行这种计算。可能是python或OS中的内存限制吗?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-28 23:28:25

18M向量* 400维*4字节/浮点= 28.8GB模型的syn0数组(训练向量)

syn1数组(隐藏权重)也将是28.8GB --尽管syn1实际上不需要文档向量的条目,因为在训练过程中,文档向量从来不是目标预测。

词汇表结构( vocabulary和index2word表)可能会添加另一个GB或更多。这就是你所有的60‘s内存。

用于相似度计算的syn0norm数组还需要28.8GB,总使用量约为90 of。这是syn0norm创建的地方,您在那里得到了错误。但是,即使syn0norm创建成功,那么深入到虚拟内存中也可能会破坏性能。

一些可能有帮助的步骤:

  • 使用至少2的min_count :出现一次的单词不太可能有很大贡献,但可能会使用大量的内存。(但由于单词在syn0中只占很小的一部分,这只会节省一点点。)
  • 在训练之后但在触发init_sims()之前,丢弃syn1数组。您将无法进行更多的培训,但是您现有的word/doc向量仍然可以访问。
  • 在训练之后,在调用most_similar()之前,自己用一个replace=True参数调用init_sims(),以放弃非规范化的syn0并将其替换为syn0norm。同样,您将无法进行更多的培训,但您将节省syn0内存。

在进行中的工作分离出文档和文字向量,这将出现在gensim过去的0.11.1节,最终也应该提供一些帮助。(它将缩小syn1,使其只包含word条目,并允许文档向量来自文件支持的(memmap'd)数组。)

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30488695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档