学习率的选取对于训练过程中的loss减小和metrics提高有很重要的意义,如何选择学习率也很重要。
在fastai中,进行训练时通常有两个阶段,也就是代码中经常会见到的:
'''
stage_1:为迁移学习后的模型参数。
stage_2:为微调后的模型参数
'''
learn.save('stage_1')
learn.save('stage_2')
对于每个stage,使用的学习率都是不一样的,让我们将重点放在整个训练过程。
'''
完全的训练过程
1.迁移学习
'''
# 搭建网络,输入数据,指定metrics函数
learn = create_cnn(data, models.resnet34, metrics=accuracy)
# 开始寻找学习率(第一阶段学习率)
learn.lr_find()
learn.recorder.plot()
# 使用该方法会得到一个梯度最小值对应的学习率,就是用该学习率为第一阶段学习率,实例中设为LR
lr = LR
# 另外,默认学习率为1e-3,也可以使用默认学习率,也就是说,不传入slice(lr)这个参数
# 开始训练
learn.fit_one_cycle(5, slice(lr))
# 接下来看一下训练中的loss和lr变化
learn.recorder.plot_losses()
learn.recorder.plot_lr()
# 保存第一阶段数据
learn.save('stage_1')
聚焦学习率的选择,在使用rec