在很多的书以及一些公开数据集中,都会将数据集分为训练集,验证集和测试集,看起来验证集和测试集并没有区别,为什么要分这两个呢?
验证集和测试集的定位是不同的,一个模型需要有好的泛化能力,需要同时在训练过的数据和没训练过的数据集上取得好的结果。
所以将训练集用于训练,验证集用于调参数,然后反复迭代直到满足性能。验证集扮演的就是一个辅助模型增加泛化能力的作用。而测试集不同,它仅仅用于最后评估模型的性能。对于用于比赛的公开数据集,验证集会公开标注,测试集不会公开。
训练集和验证集一般就是从同一个数据集随机拆分,比如要训练猫脸检测,找一个公开数据集。
但是最终评估模型好坏的时候,只用我自己拍摄的数据作为测试集,如果表现很好,那就说明模型是真好。
不过平时的小任务可以不必刻意分,尤其是数据少的时候。当你训练好模型之后,就去找真实场景的数据反复测试吧,那才是测试集的奥义。
往期AI1000问
第一期:【AI-1000问】为什么深度学习图像分类的输入多是224*224
第二期:【AI-1000问】为什么LeNet5倒数第二个全连接层维度为84?
第三期:【AI-1000问】为什么OpenCV存储的图像格式是BGR呢?
第四期:【AI-1000问】机器学习和模式识别是什么关系?
第五期:【AI-1000问】人脸的4个方向,你还分的清楚吗?
第六期:【AI-1000问】你知道为什么GoogLeNet也被称为InceptionNet吗?
第七期:【AI-1000问】softmax loss和交叉熵有什么关系?
第八期:【AI-1000问】为什么信号有单位而且是dB?
第九期:【AI-1000问】训练为什么要分测试集和验证集?
第十期:【AI-1000问】为什么现在大家喜欢用3*3小卷积?
第十一期:【AI-1000问】为什么CNN中的卷积核一般都是奇数*奇数?
第十二期:【AI-1000问】segmentation和matting有什么区别?
此后的AI1000问,请移步知识星球《有三AI》