Darknet Fine tune模型注意事项

(1)参数学习率,需要调小。

(2)观察loss,是否下降,或者上升,跳动特别明显。如果上升或者跳动特别明显说明 learn rate较大。原因:之前训练模型总的训练样本数量 t1与现在fine tune的 t2不一样。如果 t1 > t2, 不改变learn rate, 通过poly 策略算下来,fine tune时的初始learn rate < 上一个模型训练结束时的 学习率。 如果  t1 < t2, 不改变learn rate, 通过poly 策略算下来,fine tune时的初始learn rate > 上一个模型训练结束时的 学习率。此时会导致 初始学习率过高,导致 finetune的模型,会容易跳出之前的最优模型。

(3)添加burn_in参数。

burn_in=1000
这个参数在caffe中是没有的,一旦设置了这个参数,当update_num小于burn_in时,不是使用配置的学习速率更新策略,而是按照下面的公式更新

lr = base_lr * power(batch_num/burn_in,pwr)
其背后的假设是:全局最优点就在网络初始位置附近,所以训练开始后的burn_in次更新,学习速率从小到大变化。update次数超过burn_in后,采用配置的学习速率更新策略从大到小变化,显然finetune时可以尝试。
 

但是fine tune时,初始的batch = 200000很大的数,大于burn_in = 1000,导致burn_in不起作用。如果需要finetune时其作用,需要设置burn_in = initbatch + 1000

注意:Fine tune时打开burn_in, 但是初始rand init weight时,请不要使用brun_in, 使用后慧慧经验 不太好。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章