我需要微调我的 word2vec 模型。我有两个数据集,data1
and data2
.
到目前为止我所做的是:
model = gensim.models.Word2Vec(
data1,
size=size_v,
window=size_w,
min_count=min_c,
workers=work)
model.train(data1, total_examples=len(data1), epochs=epochs)
model.train(data2, total_examples=len(data2), epochs=epochs)
它是否正确?我需要将学习到的权重存储在某处吗?
我检查了这个答案 and this one但我不明白它是怎么做到的。
有人可以向我解释要遵循的步骤吗?
注意你don't需要打电话train()
with data1
如果你已经提供了data1
在模型实例化时。该模型已经完成了自己的内部工作build_vocab()
and train()
在提供的语料库上,使用默认数量epochs
(5) 如果您没有在实例化中指定。
“微调”并不是一个简单的过程,需要确保改进模型的可靠步骤。这是非常容易出错的。
特别是,如果单词data2
模型尚不知道它们,它们将被忽略。 (有一个选项可以调用build_vocab()
与参数update=True
扩大已知的词汇量,但这些单词并不真正与早期的单词完全平等。)
If data2
包括一些单词,但不包括其他单词,仅包含data2
通过额外的培训获得更新——这可能基本上会拉动这些词out与仅出现在中的其他单词具有可比较的对齐方式data1
。 (只有在交错的共享训练课程中一起训练的单词才会经历“推拉”,最终使它们处于有用的排列中。)
增量训练最安全的做法是洗牌data1
and data2
一起,并对所有数据进行持续训练:使所有单词一起得到新的交错训练。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)