日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PyTorch的六个学习率调整

發布時間:2024/9/27 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PyTorch的六个学习率调整 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文截取自《PyTorch 模型訓練實用教程》,獲取全文pdf請點擊:https://github.com/tensor-yu/PyTorch_Tutorial

文章目錄
一、pytorch中六種學習率調整方法
1.lr_scheduler.StepLR
2.lr_scheduler.MultiStepLR
3.lr_scheduler.ExponentialLR
4.lr_scheduler.CosineAnnealingLR
5.lr_scheduler.ReduceLROnPlateau
6.lr_scheduler.LambdaLR
二、學習率調整小結及step源碼閱讀
2.1 學習率調整小結

在模型訓練的優化部分,調整最多的一個參數就是學習率,合理的學習率可以使優化器快速收斂。
一般在訓練初期給予較大的學習率,隨著訓練的進行,學習率逐漸減小。學習率什么時候減小,減小多少,這就涉及到學習率調整方法。pytorch中提供了六種方法供大家使用,下面將一一介紹,最后對學習率調整方法進行總結。

一、pytorch中六種學習率調整方法

1. lr_scheduler.StepLR

class torch.optim.lr_scheduler.StepLR(optimizer, step_size, gamma=0.1, last_epoch=-1)

功能:
等間隔調整學習率,調整倍數為gamma倍,調整間隔為step_size。間隔單位是step。需要注意的是,step通常是指epoch,不要弄成iteration了。
參數:
step_size(int) - 學習率下降間隔數,若為30,則會在30、60、90…個step時,將學習率調整為lr*gamma。
gamma(float) - 學習率調整倍數,默認為0.1倍,即下降10倍。
last_epoch(int) - 上一個epoch數,這個變量用來指示學習率是否需要調整。當last_epoch符合設定的間隔時,就會對學習率進行調整。當為-1時,學習率設置為初始值。

2.lr_scheduler.MultiStepLR

class torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones, gamma=0.1, last_epoch=-1)

功能:
按設定的間隔調整學習率。這個方法適合后期調試使用,觀察loss曲線,為每個實驗定制學習率調整時機。
參數:
milestones(list) - 一個list,每一個元素代表何時調整學習率,list元素必須是遞增的。如 milestones=[30,80,120]
gamma(float) - 學習率調整倍數,默認為0.1倍,即下降10倍。
last_epoch(int) - 上一個epoch數,這個變量用來指示學習率是否需要調整。當last_epoch符合設定的間隔時,就會對學習率進行調整。當為-1時,學習率設置為初始值。

3.lr_scheduler.ExponentialLR

class torch.optim.lr_scheduler.ExponentialLR(optimizer, gamma, last_epoch=-1)

功能:
按指數衰減調整學習率,調整公式: lr = lr * gammaepoch
參數:
gamma- 學習率調整倍數的底,指數為epoch,即 gammaepoch
last_epoch(int)- 上一個epoch數,這個變量用來指示學習率是否需要調整。當last_epoch符合設定的間隔時,就會對學習率進行調整。當為-1時,學習率設置為初始值。

4.lr_scheduler.CosineAnnealingLR

class torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max, eta_min=0, last_epoch=-1)

功能:
以余弦函數為周期,并在每個周期最大值時重新設置學習率。具體如下圖所示

詳細請閱讀論文《 SGDR: Stochastic Gradient Descent with Warm Restarts》(ICLR-2017):https://arxiv.org/abs/1608.03983
參數:
T_max(int) - 一次學習率周期的迭代次數,即T_max個epoch之后重新設置學習率。
eta_min(float) - 最小學習率,即在一個周期中,學習率最小會下降到eta_min,默認值為0。

學習率調整公式為:

可以看出是以初始學習率為最大學習率,以2*Tmax為周期,在一個周期內先下降,后上升。

實例:
T_max = 200, 初始學習率 = 0.001, eta_min = 0

5.lr_scheduler.ReduceLROnPlateau

class torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode=min, factor=0.1, patience=10, verbose=False, threshold=0.0001, threshold_mode=‘rel’, cooldown=0, min_lr=0, eps=1e-08)

功能:
當某指標不再變化(下降或升高),調整學習率,這是非常實用的學習率調整策略。例如,當驗證集的loss不再下降時,進行學習率調整;或者監測驗證集的accuracy,當accuracy不再上升時,則調整學習率。

參數:
mode(str) - 模式選擇,有 min和max兩種模式,min表示當指標不再降低(如監測loss),max表示當指標不再升高(如監測accuracy)。
factor(float) - 學習率調整倍數(等同于其它方法的gamma),即學習率更新為 lr = lr * factor
patience(int) - 直譯——“耐心”,即忍受該指標多少個step不變化,當忍無可忍時,調整學習率。注,可以不是連續5次。
verbose(bool) - 是否打印學習率信息, print(‘Epoch {:5d}: reducing learning rate’ ’ of group {} to {:.4e}.’.format(epoch, i, new_lr))
threshold(float) - Threshold for measuring the new optimum,配合threshold_mode使用,默認值1e-4。作用是用來控制當前指標與best指標的差異。
threshold_mode(str) - 選擇判斷指標是否達最優的模式,有兩種模式,rel和abs。
當threshold_mode = rel,并且mode = max時,dynamic_threshold = best * ( 1 + threshold );
當threshold_mode = rel,并且mode = min時,dynamic_threshold = best * ( 1 - threshold );
當threshold_mode = abs,并且mode = max時,dynamic_threshold = best + threshold ;
當threshold_mode = rel,并且mode = max時,dynamic_threshold = best - threshold
cooldown(int) - “冷卻時間“,當調整學習率之后,讓學習率調整策略冷靜一下,讓模型再訓練一段時間,再重啟監測模式。
min_lr(float or list) - 學習率下限,可為float,或者list,當有多個參數組時,可用list進行設置。
eps(float) - 學習率衰減的最小值,當學習率變化小于eps時,則不調整學習率。

6.lr_scheduler.LambdaLR

class torch.optim.lr_scheduler.LambdaLR(optimizer, lr_lambda, last_epoch=-1)

功能:
為不同參數組設定不同學習率調整策略。調整規則為,lr = base_lr * lmbda(self.last_epoch) 。
參數:
lr_lambda(function or list) - 一個計算學習率調整倍數的函數,輸入通常為step,當有多個參數組時,設為list。
last_epoch(int) - 上一個epoch數,這個變量用來指示學習率是否需要調整。當last_epoch符合設定的間隔時,就會對學習率進行調整。當為-1時,學習率設置為初始值。

二、學習率調整小結及step源碼閱讀

2.1 學習率調整小結

Pytorch提供了六種學習率調整方法,可分為三大類,分別是

  • 有序調整;
  • 自適應調整;
  • 自定義調整。
    第一類,依一定規律有序進行調整,這一類是最常用的,分別是等間隔下降(Step),按需設定下降間隔(MultiStep),指數下降(Exponential)和CosineAnnealing。這四種方法的調整時機都是人為可控的,也是訓練時常用到的。
    第二類,依訓練狀況伺機調整,這就是ReduceLROnPlateau方法。該法通過監測某一指標的變化情況,當該指標不再怎么變化的時候,就是調整學習率的時機,因而屬于自適應的調整。
    第三類,自定義調整,Lambda。Lambda方法提供的調整策略十分靈活,我們可以為不同的層設定不同的學習率調整方法,這在fine-tune中十分有用,我們不僅可為不同的層設定不同的學習率,還可以為其設定不同的學習率調整策略,簡直不能更棒!
  • 總結

    以上是生活随笔為你收集整理的PyTorch的六个学习率调整的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 秋霞福利视频 | 精品无码人妻一区二区三区品 | 午夜快播| 久久金品| 爽爽影院免费观看 | 用力使劲高潮了888av | 影音先锋男人资源网站 | 黑人玩弄人妻一区二区三区免费看 | 日韩一二三四五区 | 国产美女在线观看 | 免费a级 | 亚洲产国偷v产偷v自拍涩爱 | 黄色的一级片 | 色综合天天射 | 国产亚洲精品久久久久久久久动漫 | 森泽佳奈在线播放 | 19禁大尺度做爰无遮挡电影 | 成人午夜视频免费看 | 精品国产乱码一区二区三 | 69精品人人人人 | 国产又粗又猛又爽又黄的视频小说 | 国精品人妻无码一区二区三区喝尿 | 久操色 | 深夜影院在线观看 | 肉色超薄丝袜脚交69xx | 黄色网址在线免费播放 | 欧美性猛片aaaaaaa做受 | 亚洲最大在线观看 | 光溜溜视频素材大全美女 | 成人污在线观看 | 毛片网站免费观看 | 日韩在线视屏 | 老熟妇仑乱视频一区二区 | 日韩欧美一二三 | 超碰人人超 | 午夜在线免费视频 | 久久精品国产精品亚洲毛片 | 毛片毛多水多 | 黄色裸体片 | 小泽玛利亚一区二区三区在线观看 | 自拍欧美亚洲 | 五月婷婷在线观看视频 | 激情久久综合 | 精品99在线 | 337p亚洲精品色噜噜噜 | 国产福利91精品一区二区三区 | 玉女心经是什么意思 | 一区二区三区成人 | 欧美sm视频 | 久操久操 | 女生扒开尿口给男生捅 | 亚洲视频在线观看网址 | 国产成人无码精品久久 | 国产情侣免费视频 | 亚洲国产精品久久久久久 | 欧美视频在线观看视频 | 特级西西444www大精品视频 | 国产精品大全 | 国产成人专区 | 一区二区三区久久久 | 国产精品九九视频 | 蜜臀va| 日本在线不卡一区二区三区 | 国产又粗又猛又爽视频 | 男人深夜影院 | 中文字幕视频一区 | 久久婷婷色综合 | 免费看片91| 国产丝袜在线视频 | www.色在线观看| 2023国产精品 | 亚洲日本在线观看视频 | 二区视频在线 | 黄网在线免费观看 | 国产精品国产三级国产普通话蜜臀 | www.av在线| 精品一区二区三区无码按摩 | 9色91| 精品亚洲中文字幕 | 中文字幕第一区综合 | 91日韩精品| 久久精品亚洲精品 | 天堂在线 | 久久精品国产精品亚洲色婷婷 | 午夜精品久久久久久久久久 | 成人激情免费 | 四虎在线免费播放 | 呦呦在线视频 | 四虎影视永久免费 | 亚洲综合国产精品 | 人人艹视频| 国产欧美精品一区二区 | a v视频在线播放 | 亚洲 美腿 欧美 偷拍 | 久久久久久久亚洲 | 三级麻豆| 久久久久久9 | 中文在线8资源库 | www.黄色网址 |