如何配置数据集

朋友们! 如需转载请标明出处:http://blog.csdn.net/jiangjunshow

在课程一中,大家已经学习了很多深度学习的基础知识,而且自己也能够开发出深度学习程序了。可以说你已经入门了。但仅仅是入门了而已,如果现在就让你去上班,让你开发商业级别的深度学习程序,你会感觉很困难,会遇到各种麻烦各种坑。总之,课程二会从实战层面教你如何构建更加强大的深度学习程序。为你进入真实战场而做好准备!
在这里插入图片描述
开发深度学习的第一步就是配置数据集,拿到一份数据集之后,我们要对它进行划分。使用其中一部分数据来进行训练,使用另外一部分来验证训练结果的好坏。例如我们在之前的实战编程中就将数据集分成了训练数据集和测试数据集。

有人将数据集划分为训练数据集,验证数据集以及测试数据集。也有人只分出训练数据集和测试数据集。后者的测试数据集的功能其实就等同于前者的验证数据集。例如我们实战编程中使用的测试数据集就是验证数据集的功能。那么前者的测试数据集又是什么功能呢?一般来说,先用训练集训练出一组参数w和b,然后用验证集来评估这组参数的表现,如果表现不好就调整超参数(学习率,神经网络层数等等),再用训练集来训练出一组新的参数,然后再用新的参数来使用验证集进行评估,如果不好就再调整超参数,再训练,再评估…直到结果满意了,然后再用最终的测试集进行参数评估。当然,如果最终测试集评估结果不好的话,那么又得重新开始训练,从这个角度上面来看,测试集就变成了验证集了,所以说很多人就直接简单的分两个级——一个训练集一个测试集。

在过去,数据集的规模很小。例如只有一百条,或者是一千条,一万条。对于这种小型数据集,大家一般常用的分配比例是70/30(如果只分成训练集和测试集),60/20/20(如果分出训练集/验证集/测试集)。而现在进入了大数据时代,数据集的规模成千上百万,巨大无比,对于这种大型数据集一般大家常用的分配比例是98/1/1,甚至有99.5/0.4/0.1。因为验证集和测试集的目的只是评估而已,对于海量数据集来说,0.1有可能就已经有一千多条数据集了,作为评估数据已经够了。

上面多处我用到了这样的说法——“大家一般常用的分配比例是……”。用这样的说法不是因为我知识浅薄不敢下定论。而是当今世上没有人敢下定论。不仅仅是对于数据集的分配比例,对其他的超参数也是一样。对于一个新项目,没有人能直接给出各个超参数的最佳值。大家都是先选一个常用的值,然后用这些值来慢慢地迭代调整超参数(训练—>验证—>调整超参数—>训练—>验证…)。而且最终调整出来的最佳超参数并不是通用的,你在语音识别调整出来的最佳超参数如果被用在人脸识别中,有可能就成为了最差超参数。所以说呢,调试过程才是关键所在。本小节就是给出大家常用的值,并且教会大家如何去调整这些超参数。学精了本小节,那么你就可以出去找份工作了,因为调整过程是很有技术含量的。

对于数据集的划分,还有一点需要注意的是——要尽量保证训练数据集,验证数据集和测试数据集的来源是一致的。例如猫的图片数据集,来源可能特别广,有些是从网页中提取的,有些是研究人员自己拍摄的,还有一些是志愿者上传的……假如训练集是网页抓取的图片,验证集是志愿者上传的,又假设网页图片很高清,志愿者的像素很低,那么无论你怎样训练,验证结果都不会很好的。你是训练不出优秀的神经网络模型滴。打比方说,假设你用1080p甚至4K蓝光画质的AV片来训练神经网络识别女优,但却用240p甚至144p来验证,那么神经网络可能会认为全屏都是可恶的马赛克。
图片
在这里插入图片描述
总目录 (点击查看更多文章)

猜你喜欢

转载自blog.csdn.net/jiangjunshow/article/details/82998866