-
小试牛刀:用猫狗识别来练练手(只用了 2000 数据来训练)
ps: 猫狗识别拿来做新算/想法的尝试,也是一个挺不错的选择 -
怎么能少了实现代码:https://github.com/Azure-Sky-L/Deep-Learning-with-Python/blob/master/CatVsDog.ipynb
- 从一开始的只有 70% -> 使用数据增强,添加 Dropout 减少过拟合达到 82 %,比未正则化的模型提高了 12% -> 使用预训练网络 vgg16 快速特征提取,然后训练自己的分类器,验证精度达到了约 90% -> 使用预训练网络,端到端的训练,并冻结卷积基,只训练自己加入的 Decnce 层的权重,验证精度约为 91% -> 微调模型,验证精度达到了 94.7%
-
通过进一步使用正则化方法以及调节网络参数(比如每个卷积层的过滤器个数或网络中的层数),你可以得到更高的精度,可以达到 86% 或 87%。但只靠从头开始训练自己的卷积神经网络,再想提高精度就十分困难,因为可用的数据太少。想要在这个问题上进一步提高精度,下一步需要使用预训练的模型
-
使用预训练网络有两种方法:特征提取(feature extraction)和微调模型(fine-tuning)
-
使用预训练网络,不使用数据增强的快速特征提取,验证精度达到了约 90%,比从头开始训练的小型模型效果要好得多。但从图中也可以看出,虽然 dropout 比率相当大,但模型几乎从一开始就过拟合。这是因为本方法没有使用数据增强,而数据增强对防止小型图像数据集的过拟合非常重要
-
最终我们得到了 93.79% 的测试精度,注意我们只用一小部分训练数据(约 10%), 训练 20 000 个样本与训练 2000 个样本是有很大差别的