<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          干貨|pytorch必須掌握的的4種學(xué)習(xí)率衰減策略

          共 3302字,需瀏覽 7分鐘

           ·

          2021-05-11 02:42

          ↑ 點(diǎn)擊藍(lán)字 關(guān)注極市平臺

          作者丨機(jī)器學(xué)習(xí)入坑者@知乎(已授權(quán))
          來源丨h(huán)ttps://zhuanlan.zhihu.com/p/93624972
          編輯丨極市平臺

          極市導(dǎo)讀

           

          本文介紹了四種衰減類型:指數(shù)衰減、固定步長的衰減、多步長衰、余弦退火衰減并逐一介紹其性質(zhì),及pytorch對應(yīng)的使用方式。 >>本周六(5月8日)早上8:50,廣東省CVPR 2021論文預(yù)交流在線學(xué)術(shù)報(bào)告,點(diǎn)擊獲取直播鏈接

          梯度下降算法需要我們指定一個學(xué)習(xí)率作為權(quán)重更新步幅的控制因子,常用的學(xué)習(xí)率有0.01、0.001以及0.0001等,學(xué)習(xí)率越大則權(quán)重更新。一般來說,我們希望在訓(xùn)練初期學(xué)習(xí)率大一些,使得網(wǎng)絡(luò)收斂迅速,在訓(xùn)練后期學(xué)習(xí)率小一些,使得網(wǎng)絡(luò)更好的收斂到最優(yōu)解。下圖展示了隨著迭代的進(jìn)行動態(tài)調(diào)整學(xué)習(xí)率的4種策略曲線:

          上述4種策略為自己根據(jù)資料整理得到的衰減類型:指數(shù)衰減、固定步長的衰減、多步長衰、余弦退火衰減。下面逐一介紹其性質(zhì),及pytorch對應(yīng)的使用方式,需要注意學(xué)習(xí)率衰減策略很大程度上是依賴于經(jīng)驗(yàn)與具體問題的,不能照搬參數(shù)。

          1、指數(shù)衰減

          學(xué)習(xí)率按照指數(shù)的形式衰減是比較常用的策略,我們首先需要確定需要針對哪個優(yōu)化器執(zhí)行學(xué)習(xí)率動態(tài)調(diào)整策略,也就是首先定義一個優(yōu)化器:

          optimizer_ExpLR = torch.optim.SGD(net.parameters(), lr=0.1)

          定義好優(yōu)化器以后,就可以給這個優(yōu)化器綁定一個指數(shù)衰減學(xué)習(xí)率控制器:

          ExpLR = torch.optim.lr_scheduler.ExponentialLR(optimizer_ExpLR, gamma=0.98)

          其中參數(shù)gamma表示衰減的底數(shù),選擇不同的gamma值可以獲得幅度不同的衰減曲線,如下:

          2、固定步長衰減

          有時我們希望學(xué)習(xí)率每隔一定步數(shù)(或者epoch)就減少為原來的gamma分之一,使用固定步長衰減依舊先定義優(yōu)化器,再給優(yōu)化器綁定StepLR對象:

          optimizer_StepLR = torch.optim.SGD(net.parameters(), lr=0.1)StepLR = torch.optim.lr_scheduler.StepLR(optimizer_StepLR, step_size=step_size, gamma=0.65)

          其中g(shù)amma參數(shù)表示衰減的程度,step_size參數(shù)表示每隔多少個step進(jìn)行一次學(xué)習(xí)率調(diào)整,下面對比了不同gamma值下的學(xué)習(xí)率變化情況:

          3、多步長衰減

          上述固定步長的衰減的雖然能夠按照固定的區(qū)間長度進(jìn)行學(xué)習(xí)率更新 但是有時我們希望不同的區(qū)間采用不同的更新頻率,或者是有的區(qū)間更新學(xué)習(xí)率,有的區(qū)間不更新學(xué)習(xí)率,這就需要使用MultiStepLR來實(shí)現(xiàn)動態(tài)區(qū)間長度控制:

          optimizer_MultiStepLR = torch.optim.SGD(net.parameters(), lr=0.1)torch.optim.lr_scheduler.MultiStepLR(optimizer_MultiStepLR,                    milestones=[200, 300, 320, 340, 200], gamma=0.8)

          其中milestones參數(shù)為表示學(xué)習(xí)率更新的起止區(qū)間,在區(qū)間[0. 200]內(nèi)學(xué)習(xí)率不更新,而在[200, 300]、[300, 320].....[340, 400]的右側(cè)值都進(jìn)行一次更新;gamma參數(shù)表示學(xué)習(xí)率衰減為上次的gamma分之一。其圖示如下:

          從圖中可以看出,學(xué)習(xí)率在區(qū)間[200, 400]內(nèi)快速的下降,這就是milestones參數(shù)所控制的,在milestones以外的區(qū)間學(xué)習(xí)率始終保持不變。

          4、余弦退火衰減

          嚴(yán)格的說,余弦退火策略不應(yīng)該算是學(xué)習(xí)率衰減策略,因?yàn)樗沟脤W(xué)習(xí)率按照周期變化,其定義方式如下:

          optimizer_CosineLR = torch.optim.SGD(net.parameters(), lr=0.1)CosineLR = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer_CosineLR, T_max=150, eta_min=0)

          其包含的參數(shù)和余弦知識一致,參數(shù)T_max表示余弦函數(shù)周期;eta_min表示學(xué)習(xí)率的最小值,默認(rèn)它是0表示學(xué)習(xí)率至少為正值。確定一個余弦函數(shù)需要知道最值和周期,其中周期就是T_max,最值是初試學(xué)習(xí)率。下圖展示了不同周期下的余弦學(xué)習(xí)率更新曲線:

          5、上述4種學(xué)習(xí)率動態(tài)更新策略的說明

          4個負(fù)責(zé)學(xué)習(xí)率調(diào)整的類:StepLR、ExponentialLR、MultiStepLR和CosineAnnealingLR,其完整對學(xué)習(xí)率的更新都是在其step()函數(shù)被調(diào)用以后完成的,這個step表達(dá)的含義可以是一次迭代,當(dāng)然更多情況下應(yīng)該是一個epoch以后進(jìn)行一次scheduler.step(),這根據(jù)具體問題來確定。此外,根據(jù)pytorch官網(wǎng)上給出的說明,scheduler.step()函數(shù)的調(diào)用應(yīng)該在訓(xùn)練代碼以后:

          scheduler = ...>>> for epoch in range(100):>>>     train(...)>>>     validate(...)>>>     scheduler.step()

          參考:

          https://www.jianshu.com/p/125fe2ab085b

          https://pytorch.org/docs/stable/optim.html#how-to-adjust-learning-rate

          如果覺得有用,就請分享到朋友圈吧!

          △點(diǎn)擊卡片關(guān)注極市平臺,獲取最新CV干貨

          公眾號后臺回復(fù)“人臉識別”獲取人臉識別數(shù)據(jù)集資源~


          極市干貨

          頂會干貨CVPR 二十年,影響力最大的 10 篇論文! CVPR2021 最新18篇 Oral 論文學(xué)術(shù)論文投稿與Rebuttal經(jīng)驗(yàn)分享

          實(shí)操教程PyTorch自定義CUDA算子教程與運(yùn)行時間分析pytorch中使用detach并不能阻止參數(shù)更新

          招聘面經(jīng)秋招計(jì)算機(jī)視覺匯總面經(jīng)分享算法工程師面試題匯總

          最新CV競賽:2021 高通人工智能應(yīng)用創(chuàng)新大賽CVPR 2021 | Short-video Face Parsing Challenge



          CV技術(shù)社群邀請函 #

          △長按添加極市小助手
          添加極市小助手微信(ID : cvmart2)

          備注:姓名-學(xué)校/公司-研究方向-城市(如:小極-北大-目標(biāo)檢測-深圳)


          即可申請加入極市目標(biāo)檢測/圖像分割/工業(yè)檢測/人臉/醫(yī)學(xué)影像/3D/SLAM/自動駕駛/超分辨率/姿態(tài)估計(jì)/ReID/GAN/圖像增強(qiáng)/OCR/視頻理解等技術(shù)交流群


          每月大咖直播分享、真實(shí)項(xiàng)目需求對接、求職內(nèi)推、算法競賽、干貨資訊匯總、與 10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動交流~



          覺得有用麻煩給個在看啦~  
          瀏覽 45
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲视频网 | 亚洲无码手机在线观看 | 亚洲日韩三级片 | 91蝌蚪色| 69操逼网站 |