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, 使用後慧慧經驗 不太好。

 

 

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