首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内存错误-分级Dirichlet过程

内存错误-分级Dirichlet过程
EN

Data Science用户
提问于 2016-04-29 05:56:38
回答 2查看 525关注 0票数 1

我正在运行层次化Dirichlet进程,HDP使用Python中的gensim,但是由于我的语料库太大,它会抛出以下错误:

代码语言:javascript
复制
model = gensim.models.HdpModel(corpus, id2word=corpus.id2word, chunksize=50000)



 File "/usr/cluster/contrib/Enthought/Canopy_64/User/lib/python2.7/site-packages/gensim/models/hdpmodel.py", line 210, in __init__
    self.update(corpus)
  File "/usr/cluster/contrib/Enthought/Canopy_64/User/lib/python2.7/site-packages/gensim/models/hdpmodel.py", line 245, in update
    self.update_chunk(chunk)
  File "/usr/cluster/contrib/Enthought/Canopy_64/User/lib/python2.7/site-packages/gensim/models/hdpmodel.py", line 313, in update_chunk
    self.update_lambda(ss, word_list, opt_o)
  File "/usr/cluster/contrib/Enthought/Canopy_64/User/lib/python2.7/site-packages/gensim/models/hdpmodel.py", line 415, in update_lambda
    rhot * self.m_D * sstats.m_var_beta_ss / sstats.m_chunksize
MemoryError

我使用以下声明加载我的语料库:

代码语言:javascript
复制
corpus = gensim.corpora.MalletCorpus('chunk5000K_records.mallet')

我用来加载语料库的数据有五百万条记录。这是我的工作,当我只加载50K记录。因此,我添加了块状选项HdpModel,但它仍然给了我一个错误。

请告诉我如何解决这个问题。我正在高性能计算上运行这个程序,所以我认为应该有一个解决方案来解决这个问题,因为这个集群具有非常大的内存和磁盘容量。

EN

回答 2

Data Science用户

发布于 2020-02-25 11:22:52

您可以使用HDP的另一种选择,即LDA。HDP不会提供分层输出。HDP和LDA都在创建一个平面层次结构。唯一的区别是,HDP是基于在透光迭代中生成的主题生成的。在线LDA是相当有效的内存,以及善于捕捉主题。

票数 1
EN

Data Science用户

发布于 2020-07-25 21:58:08

如果可能的话升级到Python3.x。它比Python2.7具有更高的内存效率。

此外,genism还提供了提高代码性能的指南。它被称为分布式计算,但有一节讨论如何提高单个节点的性能。一个建议是确保正确安装和使用用于NumPy的快速BLAS (基本线性代数)库。

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

https://datascience.stackexchange.com/questions/11496

复制
相关文章

相似问题

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