我正在keras中训练神经网络,我达到了一个经典的极限-我的训练精度随着时代的增加而提高,但我的验证精度在9个时代之后会下降(见图)。

我想知道我是否可以通过执行以下操作来避免验证精度的下降:如果时期导致验证精度的提高,则使keras net仅接受每个时期之后对权重的更改,否则重置为时期之前的状态?我假设验证在很大程度上开始偏离,因为在每个时期>9之后,神经网络的权重偏离了与验证数据的相似度。
那么,我的建议是一个好的实践吗?我可以在keras中实现它吗(是否有回调或选项允许我只有在验证改进的情况下才能更新网络)?
附带问题:我的建议是否违反了“不使用验证数据进行训练”的原则?因为我隐式地将神经网络的性能作为我的验证数据的函数。
发布于 2020-08-27 10:52:44
验证集的目的是让您了解模型通过使用训练数据进行学习所实现的泛化能力。您不必拥有验证数据集。如果您的验证数据是训练数据的随机样本,那么您最好的选择可能是修改您的架构。
简而言之,如果您希望您的模型基于验证数据进行训练,那么在训练集上训练模型,然后获取结果模型,并在验证数据上对其进行训练(即将验证数据作为训练数据)。这显然违背了建立验证集的意义。
https://stackoverflow.com/questions/57747129
复制相似问题