Mask-R-CNN 中的测试和验证有什么区别?

问题描述 投票:0回答:2

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

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

基于训练集,神经网络在每张图像之后进行学习并调整每个神经元以减少损失。神经网络完成学习后,我们使用测试集来看看我们的神经网络对于新的未见过的图像到底有多好。

但是基于验证集的 Mask-R-CNN 到底发生了什么?验证集只是为了查看结果吗?或者会根据验证结果调整一些参数以避免过度拟合?即使是这样,验证集对参数的影响有多大?神经元本身会被调整吗?

如果影响非常非常小,那么我会选择等于测试集的验证集,因为我没有很多图像(800)。

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

validation neural-network instance loss faster-rcnn
2个回答
4
投票

模型不会学习验证集。验证集仅用于给出任何时期的泛化误差的近似值,但最重要的是,还用于超参数优化。因此,我可以迭代几个不同的超参数配置并评估验证集上这些配置的准确性。

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

如果您有大量数据,则在验证集评估之后保留另一组(测试集)进行评估可能是一种奢侈。很多时候,您可能缺乏足够的标记数据,甚至不值得保留单独的测试集。

最后,这些东西并不是 Mask RCNN 特有的。验证集永远不会影响模型的训练,即权重或偏差。验证集与测试集一样,纯粹用于评估目的。


0
投票

在 Mask R-CNN(一种特定的实例分割模型)的背景下,术语“测试”和“验证”仍然具有与之前在机器学习的一般背景下描述的相同的基本含义。然而,它们在 Mask R-CNN 框架内的应用和使用可能有特定的细微差别:

Mask R-CNN 中的验证集:

在Mask R-CNN中,验证集通常是指在模型训练过程中使用的数据集的子集,用于监控模型的性能并指导超参数调整。 Mask R-CNN 中的验证集对于调整学习率、权重衰减和其他训练设置等参数以提高模型性能至关重要。 它有助于在训练过程中做出决策,例如何时停止训练(例如,根据验证性能提前停止)以及使用哪些超参数。

Mask R-CNN 中的测试集:

Mask R-CNN 中的测试集与其他机器学习环境类似,是数据集的独立部分,在模型训练或验证期间不使用。 它可以对最终训练的 Mask R-CNN 模型在未见过的数据上的性能进行公正的评估。 测试集有助于评估训练后的模型推广到新的、未见过的图像的效果以及它执行实例分割任务的效率。

差异:

Mask R-CNN 中测试集和验证集的主要区别在于它们在模型开发过程中的使用。验证集用于在训练期间调整和监控模型的性能,而测试集则保留用于对训练模型性能的最终评估。 Mask R-CNN 中的验证集指导训练过程中的决策,例如调整超参数和停止标准,而测试集则提供对模型有效性和泛化能力的最终评估。 验证集和测试集对于确保经过训练的 Mask R-CNN 模型经过良好调整、稳健且能够准确分割新的、未见过的图像中的实例至关重要。 总之,虽然 Mask R-CNN 中验证和测试的基本概念与其他机器学习环境中的相同,但它们在模型训练和评估过程中的具体应用可能有针对实例分割任务的独特考虑。

© www.soinside.com 2019 - 2024. All rights reserved.