完整的代码地址见文末。
通过 卷积神经网络 来进行图片分类
通过 CNN 来进行图片识别,目前 CNN 可以说是最好的方法,新的胶囊网络可能会颠覆,所以所有的知识都是会发展的。
第一个任务:Dogs vs Cats
数据说明:
25,000 个训练样本
12,500 个测试样本
第一个模型
我们第一个模型使用 resnet34 ,2015 ImageNet 大赛的冠军,模型的详细信息 resnet models
结果分析
下面分析一下结果
-
正确的
-
错误的
-
最正确的(正确分类概率值最大)
-
最错误的(错误分类概率值最大)
-
最模棱两可的(0.5 的概率)
如何选择 学习率
学习率是一个非常重要的参数,学习率选择太大,可能震荡,太小又会收敛太慢,因此我们需要有方法来选择合适的学习率。
fastai 中选择学习率的方法来自 Cyclical Learning Rates for Training Neural Networks ,本头条号中之写过该文章的阅读笔记,欢迎关注浏览。
提高模型
我们通过数据增强的方式来提高模型,通过对原图进行一些变化
微调 以及 不同的学习率
我们在上面已经在最后一层调试好了,下面我们要开始去调试其他层参数,frozen_layer 为之前的卷积层
训练步骤总结
-
开始数据增强功能,设置 precompute=True
-
使用 lr_find() 方法来寻找最大的 learning rate,在此 lr 下,还能显著的降低 loss
-
使用预训练的模型来训练模型最后一层,大概 1-2 epoches
-
使用 lr 变化的方法来训练最后一层,大概 2-3 epoches
-
解锁所有卷积层
-
通过 differential learning rates 来训练网络
-
再次使用 lr_find()
-
设置 cycle_mult=2 再次训练整个网络,直到过拟合
深入理解我们第一个模型
tfms 是 transformations 的缩写,tfms_from_model 能够帮助我们对图片进行 缩放、裁剪、正则化。
以上就是本次课程的全部。
课程完整的 jupyter notebook 地址可以在原文中看到。
本文是 fastai 课程的第二课,欢迎持续关乎。
你的鼓励是我继续写下去的动力,期待我们共同进步。
原文地址:https://www.zybuluo.com/zhuanxu/note/1046935