我正在使用 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
但话又说回来,这是not处理过度拟合或其他更多训练似乎会损害评估分数的情况的最佳方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)