验证集和测试集

训练集,验证集和测试集之间关系

一般将样本分为训练集和测试集,然后又将训练集进一步分为(训练集和验证集)。

一个形象的比喻:

    训练集-----------学生的课本;学生 根据课本里的内容来掌握知识。

    验证集------------作业,通过作业可以知道 不同学生学习情况、进步的速度快慢。

    测试集-----------考试,考的题是平常都没有见过,考察学生举一反三的能力。

大部分网络模型的训练就是这么一个套路:训练迭代n个epoch以后就进行一次验证,然后网络会输出在验证集上的loss或者其他评价指标。(然后根据这个评价指标进行调参,而不是直接使用测试集进行测试,测试集只是用来评估模型性能的好坏而已

训练集的作用是为了训练网络模型。

验证集的作用:快速调参,也就是用验证集选择超参数(网络层数,网络节点数,迭代次数,学习率这些)。另外用验证集还可以监控模型是否异常(是否过拟合等),然后决定是不是要提前终止训练。

验证集的关键在于选择超参数,我们手动调参是为了让模型在验证集上的表现越来越好,如果把测试集作为验证集,调参去拟合测试题,就有点相当于作弊了。

测试集既不参与参数的学习过程,也不参与参数的选择过程,就是用训练好的模型用于实例研究。仅仅用于模型的评价。

我的理解:训练集用于训练模型,验证集用于快速调参(根据验证集输出对的损失函数或者其他评价指标进行快速调参使得模型达到最优状态),测试集仅仅是用训练集和验证集得到的模型进行测试,用于评价模型的好坏,它并不参与模型的参数学习过程,也不参与参数的选择过程。

验证集的正确打开方式:

验证集可以看做参与了 “人工调参” 的训练过程

一般训练几个 epoch 就跑一次验证看看效果(大部分网络自带这个功能)

这样做的第一个好处是:可以及时发现模型或者参数的问题,比如模型在验证集上发散啦、出现很奇怪的结果啦(Inf)、mAP不增长或者增长很慢啦等等情况,这时可以及时终止训练,重新调参或者调整模型,而不需要等到训练结束。

另一个好处是验证模型的泛化能力,如果在验证集上的效果比训练集上差很多,就该考虑模型是否过拟合了。同时,还可以通过验证集对比不同的模型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值