我有一个带Dropout图层的模型(p = 0.6)。我最终以.eval()
模式训练模型并再次以.train()
模式训练模型,我发现训练.eval()
模式给了我更好的准确性和更快的减少训练数据,
train()
:火车损失:0.832,验证损失:0.821
eval()
:火车损失:0.323,验证损失:0.251
为什么会这样?
这似乎模型架构很简单,并且在列车模式下,不能捕获数据中的特征,因此经历欠拟合。
eval()
禁用丢失和批量标准化,以及其他模块。
这意味着模型可以更好地训练而不会辍学,从而帮助模型更好地学习更多神经元,同时增加层大小,增加层数,降低辍学概率,有所帮助。