Parameters 如何在不使用Gensim Doc2Vec中的培训文档的情况下更改已保存模型的参数?
我预处理我的文档,训练我的模型,并按照此处给出的准则保存它: 一段时间后,我想用不同的参数重新训练我的模型。然而,我不想再对文档进行预处理并创建“训练语料库”,因为它需要将近3天的时间。是否有一种解决方案可以轻松加载保存的模型、更改参数并使用以下代码的这些新参数对模型进行培训:Parameters 如何在不使用Gensim Doc2Vec中的培训文档的情况下更改已保存模型的参数?,parameters,model,gensim,doc2vec,Parameters,Model,Gensim,Doc2vec,我预处理我的文档,训练我的模型,并按照此处给出的准则保存它: 一段时间后,我想用不同的参数重新训练我的模型。然而,我不想再对文档进行预处理并创建“训练语料库”,因为它需要将近3天的时间。是否有一种解决方案可以轻松加载保存的模型、更改参数并使用以下代码的这些新参数对模型进行培训: model = Doc2Vec.load(myPath/myModel.doc2vec) model = gensim.models.doc2vec.Doc2Vec(vector_size=300, min_count=
model = Doc2Vec.load(myPath/myModel.doc2vec)
model = gensim.models.doc2vec.Doc2Vec(vector_size=300, min_count=2, epochs=40, dm=1, window=8)
model.build_vocab(train_corpus)
model.train(train_corpus, total_examples=model.corpus_count, epochs=model.epochs)
最好。首先,请注意,当前代码的这一部分与加载的模型无关,因为它会立即被第二行从头开始实例化模型所创建的新模型所取代:
model=Doc2Vec.load(myPath/myModel.Doc2Vec)
model=gensim.models.doc2vec.doc2vec(vector_size=300,min_count=2,epochs=40,dm=1,window=8)
第二,一般来说,您可以在.build\u vocab()
步骤之后.save()
一个模型,然后为以后的多个培训课程重新加载该模型。而且,可以直接更改模型的一组参数,只需在训练之前为它们分配新值(如d2v_model.window=10
),即可对其产生影响。例如:
d2v_模型=Doc2Vec(向量大小=300,最小计数=2,时代=40,dm=1,窗口=8)
d2v_模型。构建_语音库(培训_文本)
d2v_model.save(基本_model_路径)
然后,稍后:
d2v\u模型w10=Doc2Vec.load(基本模型路径)
d2v_型号_w10.window=10
d2v_模型_w10.train(训练文本,总示例=d2v_模型_w10.corpus_count,epochs=d2v_模型_w10.epochs)
在.build\u vocab()
修改后,此修改应能正常工作的一些模型参数包括:
窗口
(在sg
中)或Word2Vec
/dm
(在dbow\u words
中)Doc2Vec
(如果在正值之间变化)负值
工人
,alpha
minu-alpha
.build\u vocab()
步骤(包括发现工作词汇表和分配起始向量,或预先计算基于词汇表的值)的参数,如果在运行.build\u vocab()
后进行修改,不会改变模型行为。其中一些参数包括:
(因为vector\u size
的最后一步分配向量).build\u vocab()
,min\u count
,max\u final\u vocab
trim\u rule
(或在零和正数之间更改hs
)负数
,示例
(阈值表在ns\u指数
)中计算。build\u vocab
。build_vocab()
,而是自己调用扫描步骤,然后。save()
。然后在.load()
&更改参数后,调用.prepare\u vocab()
和。prepare\u weights()
步骤。)
最后,与您的主要问题分开,如果您的语料库足够大,培训步骤需要3天,那么需要考虑以下事项:
可能过多-许多已发表的作品只使用10-20个时代,在较小的训练集上更经常需要更多的时代epochs=40
- 对于大型语料库,使用更大的
通常会缩短模型大小和训练时间,而不会影响质量,甚至会提高质量(通过消除很少出现的单词,这些单词永远不会变成噪音)minu count
- 对于大型语料库,更具攻击性(更小)的
值可以节省大量时间,特别是对于具有子频的真实自然语言文本。(频繁使用的单词不需要如此多的重复训练,因此更积极地跳过它们既可以节省时间,又可以提高对较罕见单词的相对关注度和质量。)sample