目前深度學習使用的都是非常簡單的一階收斂演算法,梯度下降法,不管有多少自適應的優化演算法,本質上都是對梯度下降法的各種變形,所以,初始學習率對深層網路的收斂起著決定性的作用,下面就是梯度下降法的公式:
α 就是學習率,如果學習率太小,會導致網路loss下降非常慢,如果學習率太大,那麼引數更新的幅度就非常大,就會導致網路收斂到區域性最優點,或不會收斂或者loss直接開始增加;如下圖所示:
學習率的選擇策略在網路的訓練過程中是不斷在變化的,在剛開始的時候,引數比較隨機,所以我們應該選擇相對較大的學習率,這樣loss下降更快;當訓練一段時間之後,引數的更新就應該是更小的幅度,所以學習率一般會做衰減,衰減的方式也非常多,比如到一定的步數將學習率乘上0.1,也有指數衰減等。
學習率是優化器類optimizer的乙個引數,設定學習率,就是給優化器傳遞這個引數,通常有兩大類:
sgd_optimizer = mx.optimizer.sgd(learning_rate=0.03, lr_scheduler=schedule) #schedule貌似沒有定義trainer = mx.gluon.trainer(params=net.collect_params(), optimizer=sgd_optimizer)
構造乙個lrs,作為變數傳遞給優化器,當做優化器的lr_scheduler引數。
lrs # 需要自己構造學習率調整策略trainer = gluon.trainer(net.collect_params(), 'sgd', {'learning_rate': learning_rate, 'wd': 0.00
2學習率調整 深度學習實驗總結 tricks
深度模型是黑盒,而且本次並沒有嘗試超深和超寬的網路,所以結論只能提供乙個先驗,並不是標準答案!同時不同的任務也可能導致不同,比如分割,所以必須具體問題具體分析!只收藏不點贊,知乎以後就不會給你推送類似的文章了,瘋狂暗示點讚前陣子參加了幾個cv的比賽,發現了這樣的問題 雖然了解的理論知識不算特別少,跑...
pytorch筆記 調整網路學習率
1 class lenet t.nn.module 2def init self 3 super lenet,self init 4 self.features t.nn.sequential 5 t.nn.conv2d 3,6,5 6t.nn.relu 7 t.nn.maxpool2d 2,2 8...
pytorch框架學習(12) 學習率調整策略
主要方法 1.steplr 調整方式 lr lr gamma 2.multisteplr 調整方式 lr lr gamma milestones 50 125 160 scheduler lr optim.lr scheduler.multisteplr optimizer,milestones,g...