我正在使用gensim word2vec训练Skipgram模型。为了避免模型过度拟合,我想在达到基于特定准确性测试的参数传递给参数的历元数之前退出训练。
gensim中是否有办法从回调函数中中断word2vec的训练?
最佳答案
如果实际上更多的培训使您的Word2Vec
模型在某些外部评估上更糟,则可能是您的设置存在其他问题。 (例如,许多在线代码示例在循环中多次调用train()
会错误地控制学习率alpha
,从而实际上使学习率train()
变为负值,这意味着每个训练示例都会通过来对模型进行反校正反向传播。)
相反,如果主要问题是真正的过度拟合,那么比有条件的早期停止解决方案更好的解决方案可能是调整其他参数,例如模型大小,以便无论进行多少次训练都不会超出有用的概括。
但是,如果您真的想尝试较早停止的较差方法,则可能会在回调中引发可捕获的异常,并将其捕获到之外,以使您的其他代码继续进行中止训练的结果。例如...
自定义例外...
class OverfitException(Exception):
pass
...然后在您的回调中...
raise OverfitException()
...以及培训...
try:
model.train(...)
except OverfitException:
print("training cut short")
# ... & your code with partially-trained model continues
再次重申,这不是处理过度拟合或其他情况下可能受到更多培训似乎影响评估分数的最佳方法。
关于python - 如何从回调函数中断Word2vec培训?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58134062/