在Mask-R-CNN中,测试和验证之间有什么区别?

时间:2019-04-16 10:29:04

标签: validation neural-network instance loss faster-rcnn

我有自己的图像数据集,并使用Mask-R-CNN进行训练。在那里,您可以将数据集分为训练,验证和测试。

我想知道验证和测试之间的区别。 我知道验证通常用于在每个时期后查看NN的质量。在此基础上,您可以看到NN的质量以及是否过度拟合。 但是我想知道NN是否基于验证集学习。

基于训练集,NN在每个图像之后学习并调整每个神经元以减少损失。 NN完成学习后,我们使用测试集来查看我们的NN在看不见的新图像上的表现如何。

但是基于验证集,Mask-R-CNN究竟发生了什么?验证集是否仅用于查看结果?还是会根据验证结果调整某些参数以避免过拟合?即使是这种情况,validationset对参数有多大影响?神经元本身会被调节吗?

如果影响很小,那么我将选择与测试集相等的验证集,因为我没有很多图像(800张)。

所以基本上我想知道Mask-R-CNN中测试和验证之间的区别,即验证集如何以及在多大程度上影响NN。

1 个答案:

答案 0 :(得分:1)

该模型没有学习验证集。验证集仅用于在任何时期给出泛化误差的近似值,而且对于超参数优化也至关重要。因此,我可以遍历几种不同的超参数配置,并评估验证集中那些参数的准确性。

然后,我们根据验证集的准确性选择最佳模型后,便可以根据测试集计算测试误差。理想情况下,测试集和验证集的准确性之间没有太大差异。有时,如果您遍历许多不同的超参数,则模型实质上可以“过度拟合”验证集。

如果有大量数据,保留另一套测试集以进行验证集评估之后的评估是一种奢侈的选择。很多时候,您可能缺少足够的标签数据,甚至值得保留一个单独的测试集。

最后,这些不是特定于Mask RCNN的。验证集绝不会影响模型的训练,即权重或偏差。验证集与测试集一样,仅用于评估目的。