Numpy 使用gensim进行Numpy Word2vec训练时的一个交换问题

Numpy 使用gensim进行Numpy Word2vec训练时的一个交换问题

在本文中,我们将介绍使用gensim进行Numpy Word2vec训练时的一个交换问题。当训练语料非常大时,可能会出现交换问题,导致训练速度变慢。

阅读更多:Numpy 教程

交换问题

在对大型语料进行Word2vec训练时,常常需要使用numpy。在gensim中,Word2Vec算法默认使用numpy实现。然而,当语料非常大时,可能会出现交换问题。这是由于numpy会在内存中存储连续的空间,如果向其中添加大量数据,就需要将之前的数据放到硬盘中,这个过程就叫交换。

交换问题会导致训练速度变慢。我们可以通过查看操作系统的交换使用情况,来判断是否出现了交换问题。在Linux系统中,我们可以使用free命令来查看。

$ free -m

在结果中,如果”Swap”一栏不为0,那么就表示出现了交换问题。

解决方案

gensim提供了一种解决大型语料交换问题的方法,就是将Word2vec模型分成多个文件进行保存。gensim中可以通过指定”max_final_vocab”参数,来设置分割文件的大小。例如,如果将”max_final_vocab”设置为1000000,那么保存的每个文件最大包含1000000个词。

from gensim.models import Word2Vec

sentences = ... # 语料

model = Word2Vec(
    sentences=sentences,
    size=100,
    window=5,
    min_count=5,
    workers=8,
    max_final_vocab=1000000
)

model.save("model") # 保存模型

保存完模型后,我们可以使用”load”函数来加载它。在使用模型时,gensim会自动将需要的文件按需要加载。

from gensim.models import Word2Vec

model = Word2Vec.load("model")

# 使用模型

总结

在对大型语料进行Word2vec训练时,如果出现交换问题,可以使用gensim提供的解决方案,将Word2vec模型分成多个文件进行保存。通过设置”max_final_vocab”参数,可以控制每个文件的大小。保存完模型后,使用”load”函数来加载它,gensim会自动将需要的文件按需要加载。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程