问题描述
我想使用“gensim”训练一个 Word2Vec 模型。我想确定初始评级率。但是,据说“alpha”和“start_alpha”参数都可以用于这样做。它们之间有什么区别?它们是一样的吗?
解决方法
参数alpha
用于the constructor:
classgensim.models.word2vec.Word2Vec(sentences=None,corpus_file=None,vector_size=100,alpha=0.025,window=5,min_count=5, max_vocab_size=无,样本=0.001,种子=1,工人=3, min_alpha=0.0001,sg=0,hs=0,负=5,ns_exponent=0.75,cbow_mean=1,hashfxn=,epochs=5,null_word=0,trim_rule=无,sorted_vocab=1,batch_words=10000,compute_loss=False, callbacks=(),comment=None,max_final_vocab=None)
而参数 start_alpha
用于 train 方法:
train(corpus_iterable=None,total_examples=None,total_words=None,epochs=None,start_alpha=None,end_alpha=None, word_count=0,queue_factor=2,report_delay=1.0,compute_loss=False, 回调 =(),**kwargs)
至于使用:
start_alpha
(float,optional) – 初始学习率。如果提供,
替换构造函数中的起始 alpha
,对于这个调用
到train()
。仅在多次调用 train() 时使用,当您
想要自己管理 alpha 学习率(不推荐)。
它们本质上是一样的。如果在构造函数中指定非默认值:
-
它们在模型中缓存为
alpha
&min_alpha
-
如果您还选择在构造函数中指定训练语料库 (
的sentences
/corpus_iterable
/corpus_file
),则alpha
& {{1 }} 将成为自动min_alpha
start_alpha
,end_alpha
如果您改为显式调用 .train()
:
- 您可以指定一个
.train()
和start_alpha
,仅用于该调用,它将代替构造函数期间设置的值(但不会缓存在模型中以供将来调用)
如果你在同一个模型上多次调用 end_alpha
出于某种原因——这通常是一个不必要的坏主意,除非在一些非标准的专家使用情况下——很可能您希望在每次调用中正确选择 .train()
范围的正确进展(这样它就不会无意义地上下跳动)。
专家使用是单独的、非缓存的 alpha
和 start_alpha
参数存在的真正原因。大多数用户应该坚持使用默认值(所以不要使用任何这些),如果他们真的到了修补的地步,只需在构造函数中尝试不同的 end_alpha
值,仔细监控它是否有帮助。