目录
关于maxbatches与学习率的关系,参看:darknet分类,迁移学习,还没有达到预期,学习率降为0了,怎么破?
关于cfg文件参数说明,参看:Darknet模型中cfg文件理解与说明
第一训练平安标注数据分析:
第一训练模型参数:
batch= 16
subdivisions= 4
learning_rate=0.01
policy=poly
power=4
max_batches=250000
学习曲线:
训练时间:2020年6月23日 16:00-2020年6月24日 10:00
训练结果:
显然,损失没有下降,计算此时训练epoch=(191400-152000)*16/29416=21次
其中:29416是本次训练图片张数,16是参数batch的值,每16张进行一次反向传播。
如何设置epoch和学习率
设置的epotch100的时候结果还可以接受,当设置过大的时候结果反而变差了。
为了防止快速陷入局部最优,最常用的方法就是使用较小的学习速率,也就是降低learning rate。learning rate小了,为了将数据学充分,自然就要增加学习次数。也就是增加epoch.
batch一般用128,epoch是一般把数据集遍历几遍,大部分用10个epoch,剩下你就知道了
yolo v1的论文中,作者设置epoch为130,学习速率也是根据epoch变化而变化的
如果设置epoch=128,那么需要迭代的次数为:29416*128/16=235328
其中16是batch的值,每次迭代训练的图片张数,128=epoch,29416是训练的图片总数
所以maxbatches=152000+235328=387328
这里把maxbatches设置为400000
batch= 16
subdivisions= 4
learning_rate=0.01
policy=poly
power=4
max_batches=400000
学习率变化曲线:
若学习率为0.02,则学习曲线为: