eval() 模式下的训练模型在 PyTorch 中提供更好的结果?
Training model in eval() mode gives better result in PyTorch?
我有一个带有 Dropout 层的模型(p=0.6)。我最终以 .eval()
模式训练模型并再次以 .train()
模式训练模型,我发现训练 .eval()
模式给了我更好的准确性和更快的训练数据损失减少,
train()
:训练损失:0.832,验证损失:0.821
eval()
:训练损失:0.323,验证损失:0.251
为什么会这样?
这看起来模型架构很简单,在训练模式下,无法捕获数据中的特征,因此出现欠拟合。
eval()
在其他模块中禁用 dropouts 和 Batch normalization。
这意味着模型在没有 dropout 的情况下训练得更好,有助于模型更好地学习更多的神经元,同时增加层大小,增加层数,降低 dropout 概率,有助于。
我有一个带有 Dropout 层的模型(p=0.6)。我最终以 .eval()
模式训练模型并再次以 .train()
模式训练模型,我发现训练 .eval()
模式给了我更好的准确性和更快的训练数据损失减少,
train()
:训练损失:0.832,验证损失:0.821
eval()
:训练损失:0.323,验证损失:0.251
为什么会这样?
这看起来模型架构很简单,在训练模式下,无法捕获数据中的特征,因此出现欠拟合。
eval()
在其他模块中禁用 dropouts 和 Batch normalization。
这意味着模型在没有 dropout 的情况下训练得更好,有助于模型更好地学习更多的神经元,同时增加层大小,增加层数,降低 dropout 概率,有助于。