Word2Vec:使用Gensim和Google新闻数据集-执行时间很慢 - python

该代码在python中。我将二进制模型加载到python上的gensim中,并使用“ init_sims”选项使执行速度更快。操作系统是OSX。
加载大约需要50-60秒。并等价的时间找到“ most_similar”。这正常吗?在使用init_sims选项之前,花费了几乎两倍的时间!我觉得这可能是OS RAM分配问题。

model=Word2Vec.load_word2vec_format('GoogleNewsvectorsnegative300.bin',binary=True)
model.init_sims(replace=True)
model.save('SmallerFile')
#MODEL SAVED INTO SMALLERFILE & NEXT LOAD FROM IT
model=Word2Vec.load('SmallerFile',mmap='r')
#GIVE RESULT SER!
print model.most_similar(positive=['woman', 'king'], negative=['man'])

参考方案

请注意,init_sims(replace=True)的内存节省效果不会在保存/加载周期中持续存在,因为保存始终会保存“原始”向量(可以从中重新计算单位归一化向量)。因此,即使重新加载后,第一次调用most_similar()时,也会在后台调用init_sims(),并且内存使用量将翻倍。

而且,GoogleNews数据集非常大,即使在单元规范化可能使内存使用量翻倍之前,也要加载3 GB以上的内存。因此,取决于您正在运行的其他内容和计算机的RAM,在most_similar()计算运行时可能正在使用交换内存–对于“针对每个向量和排序”的计算,这非常慢结果相似度。 (不过,第一次之后的任何most_similar()检查都不需要重新填充单位归一化的向量缓存,因此应该比第一次调用更快。)

假设您已将模型保存在init_sims(replace=True)之后,则其原始向量已经进行了单位归一化。因此,您可以在load()之后手动修补模型以跳过重新计算:

model.syn0norm = model.syn0

然后,即使您的第一个most_similar()也将参考(单个,内存映射的)向量集,而不会触发init_sims()

如果仍然太慢,则可能需要更多内存或将向量修整为一个子集。 GoogleNews向量似乎被排序为最早出现的单词,因此扔掉最后10%,50%甚至90%的单词可能仍会为您提供有用的一组最常见的单词。 (您需要通过查看模型对象和源代码来自己进行修整。)

最后,您可以使用最近邻居索引来获得更快的top-N匹配,但是要付出额外的内存和近似结果(可能会错过某些真正的top-N匹配)。 gensim annoytutorial.ipynb目录中的演示IPython笔记本的docs/notebooks IPython笔记本中有最新gensim版本的IPython笔记本教程。

在返回'Response'(Python)中传递多个参数 - python

我在Angular工作,正在使用Http请求和响应。是否可以在“响应”中发送多个参数。角度文件:this.http.get("api/agent/applicationaware").subscribe((data:any)... python文件:def get(request): ... return Response(seriali…

Python exchangelib在子文件夹中读取邮件 - python

我想从Outlook邮箱的子文件夹中读取邮件。Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件我尝试了此页面folder部分中的内容,但无法正确完成https://pypi.python.org/pypi/exchangelib/ 参考方案 您需要首先掌握Folder的myfo…

R'relaimpo'软件包的Python端口 - python

我需要计算Lindeman-Merenda-Gold(LMG)分数,以进行回归分析。我发现R语言的relaimpo包下有该文件。不幸的是,我对R没有任何经验。我检查了互联网,但找不到。这个程序包有python端口吗?如果不存在,是否可以通过python使用该包? python参考方案 最近,我遇到了pingouin库。

Python GPU资源利用 - python

我有一个Python脚本在某些深度学习模型上运行推理。有什么办法可以找出GPU资源的利用率水平?例如,使用着色器,float16乘法器等。我似乎在网上找不到太多有关这些GPU资源的文档。谢谢! 参考方案 您可以尝试在像Renderdoc这样的GPU分析器中运行pyxthon应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…

Python ThreadPoolExecutor抑制异常 - python

from concurrent.futures import ThreadPoolExecutor, wait, ALL_COMPLETED def div_zero(x): print('In div_zero') return x / 0 with ThreadPoolExecutor(max_workers=4) as execut…