听起来像是个愚蠢的问题,但确实让人很恼火。在模型训练过程中,为什么有时会出现奇怪的情况,即使模型参数没有任何变化,却得到不同的输出或结果,或者更具体地说是准确率或验证准确率?
假设我们构建了一个名为A
的模型。我们训练它并得到了结果,大约是acc = 60和val_acc = 70。好吧,没问题。
现在,再次训练同一个模型(未关闭环境),这次我们得到acc = 40和val_acc = 20……?我的意思是,为什么呢?模型内部没有任何变化,没有参数
,没有超参数
,什么都没有。那为什么会出现这种怪现象呢?
回答:
你需要设置环境的随机种子。这样程序就应该可以重现。在Keras中如何做到的一个示例在这里展示(https://machinelearningmastery.com/reproducible-results-neural-networks-keras/),但其他库也有类似的方法。