mmdetection - config配置文件之schedule(learning rate)
config文件命名意義:
{model}[model setting]{backbone}{neck}[norm setting][misc][gpu x batch_per_gpu]{schedule}{dataset}
{model}:表示具體模型,如faster_rcnn、mask_rcnn等;
[model setting]:某些模型的具體設置,如htc的without_semantic、reppoints的moment等;
{backbone}:骨干網絡,如r50、x101等;
{neck}:網絡頸,如fpn、pafpn、nasfpn、c4等;
[norm setting]:正則化設置,如bn、gn、syncbn、gn-head/gn-neck、gn-all等;
[misc]:其他設置,如dconv、gcb、attention、albu、mstrain等;
[gpu x batch_per_gou]:使用的總 G P U {\rm GPU} GPU數以及每塊 G P U {\rm GPU} GPU的采樣數;
{schedule}:設置學習策略,如1x、2x、20e等;
{dataset}:指示具體的數據集,如coco、cityscapes、voc_0712、wider_face等。
1、momentum
不恰當的初始權值可能使得網絡的損失函數在訓練過程中陷入局部最小值,達不到全局最優的狀態。momentum為動量因子,當 momentum 動量越大時,其轉換為勢能的能量也就越大,就越有可能擺脫局部凹域的束縛,進入全局凹域。
v為動量,初始化為0,momentum為動量因子,最常見的設定值是0.9
v = momentum * v - learning_rate * dw
w = w + v
如果上次的momentum(v)與這次的負梯度方向是相同的,那這次下降的幅度就會加大,從而加速收斂。momentum算法將一段時間內的梯度向量進行了加權平均,分別計算得到梯度更新過程中 w 和 b 的大致走向,一定程度上消除了更新過程中的不確定性因素(如擺動現象),使得梯度更新朝著一個越來越明確的方向前進。
2、weight_decay
weight_decay為權重衰減系數。在損失函數中,weight decay是放在正則項(regularization)前面的一個系數,正則項一般指示模型的復雜度,所以weight decay的作用是調節模型復雜度對損失函數的影響,若weight decay很大,則復雜的模型失函數的值也就大。
3、lr學習率
理論上來說,通常學習率過小->收斂過慢,學習率過大->錯過局部最優
實際上來說,可能:學習率過小->不收斂,學習率過大->不收斂
base_lr(基礎學習率)、regular_lr(基礎學習率衰減list)、warmup_lr(熱身階段學習率)
base_lr=0.02
regular_lr=base_lr*系數
regular_lr=[0.02,0.02 * 0.1,0.02 * 0.01]
warmup:
k = (1 - cur_iters / self.warmup_iters) * (1 - self.warmup_ratio)
warmup_lr = [_lr * (1 - k) for _lr in self.regular_lr]
也就是warmup_lr = lr * (self.warmup_ratio+(1 - self.warmup_ratio) * cur_iters / self.warmup_iters)
k=(1-cur_iters/500) * (1-0.001) 越來越小
warmup_lr = [_lr * (1 - k) for _lr in self.regular_lr]越來越大
學習率變化:上升——平穩——下降
warmup使用場景:
1、當網絡非常容易nan時候,采用warm up進行訓練,可使得網絡正常訓練;
2、如果訓練集損失很低,準確率高,但測試集損失大,準確率低,可用warm up;
總結
以上是生活随笔為你收集整理的mmdetection - config配置文件之schedule(learning rate)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 博弈论系列文章
- 下一篇: 【转载】通过搜狗站长平台提交网站域名变更