我的问题是另一位用户问的一个问题:What's is the difference between train, validation and test set, in neural networks?
通过查看验证和训练集的性能(在Matlab中使用nntool
框很容易做到),然后使用经过训练的net
结构,终止达到最低MSE的学习过程就结束了如果看不见的测试集的性能比训练集的性能稍差,我们有一个过拟合的问题。尽管在学习过程中选择了与具有几乎相同性能的验证和训练集相对应的参数的模型,但我始终会遇到这种情况。那测试仪的性能为什么会比训练仪差呢?
答案 0 :(得分:1)
训练数据 =我们用于训练模型的数据。
验证数据 =我们用于在每个时间段或运行时测试模型的数据,以便由于过度拟合或任何其他模型,我们可以尽早手动停止模型。现在,假设我在模型上运行了1000个纪元,在模型上运行了500个纪元,我认为模型在训练数据上的准确性为90%,在验证数据上的准确性为70%。现在,我可以看到我的模型过度拟合。我可以手动停止训练,并在完成1000个纪元之前完成更多的工作并对其模型进行调整,而不仅仅是查看行为。
测试数据 =现在,在计算了1000个历元之后,我完成了模型训练。我将预测我的测试数据并查看测试数据的准确性。它给了86%
我的训练准确度是90%,验证准确度是87%,测试准确度是86%。这可能会有所不同,因为验证集,训练集和测试集中的数据完全不同。我们在训练集中有70%的样本在验证集中有10%,在测试集中有20%。现在,在我进行验证时,我的模型可以正确预测8张图像,而在测试模型时,可以正确预测100张图像中的18张图像。在现实生活中,这是正常现象,因为每张图像中的像素都与另一幅图像不同,因此可能会产生一些差异。
在测试集中,它们的图像多于验证集中的图像,这可能是原因之一。因为图像越多,错误预测的风险就越大。例如90%的精度 我的模型可以正确预测100个图像中的90个,但是如果我将图像样本增加到1000个,则我的模型可以正确预测1000个图像中的(850、800或900个)图像