我有一些预先训练好的word2vec模型,我想用相同的语料库对它们进行评估。在给定模型转储文件和内存中的语料库的情况下,有没有办法获得原始的训练损失?
发布于 2019-03-30 21:27:20
gensim的Word2Vec
(和相关模型)的训练损失报告是一个新功能,还没有像大多数人预期的那样工作。
例如,至少通过gensim 3.7.1 (2019年1月),您可以检索自上次调用train()
以来的总损失(跨越多个时期)。一些pending changes可能最终会改变这一点。
只有在创建模型时通过compute_loss
参数请求时,才会进行损失统计。因此,如果模型最初没有使用此设置进行配置,那么它内部将不会有关于先前训练的丢失数据。
您可能会篡改已加载的模型w2v_model.compute_loss = False
,以便进一步调用train()
(具有相同或新的数据)来收集损失数据。但是,请注意,对于当前数据,这种训练也将更新模型。
您还可以查看score()
方法,该方法可用于某些模型模式,该方法报告新文本批次的丢失相关数量,而无需更改模型。它可能本质上是一种评估新文本是否“看起来”像原始训练数据的方法。有关更多信息,请参阅方法文档,其中包括激励学术论文和示例笔记本的链接:
https://radimrehurek.com/gensim/models/word2vec.html#gensim.models.word2vec.Word2Vec.score
https://stackoverflow.com/questions/55428777
复制