何时停止训练 – LOOV MLP

我正在运行一个多层感知器(MLP)来将一组数值分类到10个不同的类别中。

简化来说,我有一个声呐设备,它可以为一个物体提供400个“读数”。每个读数是一组1000个浮点数值。

我总共扫描了100个物体,并希望对它们进行分类,并基于留一法交叉验证来评估模型。

对于每个物体,我将数据分为一个包含99个物体的训练集和一个包含剩余一个物体的测试集。我将训练集(99个物体,99*400个“读数”)输入MLP,并使用测试集(1个物体,1*400个“读数”)进行验证。

我的问题是:我如何知道使用哪个训练周期作为最终的“最佳”模型?我在网上搜索了一些答案,有人说应该使用验证准确率最高的周期,但我觉得这像是作弊。我不应该只基于训练数据的统计数据来选择模型吗?(我的想法是,训练中的随机权重重新洗牌可能会产生一个人为的高验证准确率,而这实际上并不能为将来可能扫描的新物体提供有用的模型)

Stack Overflow上关于使用验证准确率最高的训练周期的回答:

神经网络中训练集、验证集和测试集的区别是什么?

祝好,Deckwasher


回答:

这被称为提前停止

你需要一个验证集。

-在每个周期后,计算你希望在验证集上的评估指标。

-始终将在验证集上表现最佳的模型参数保存到一个变量中。

-如果验证结果在两到n次迭代中没有改善,就停止周期,并用表现最佳的参数重置MLP。

-然后,使用之前保存的在验证集上表现最佳的模型来计算测试集上的结果。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注