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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

pytorch 查看当前学习率_pytorch调整模型训练的学习率

發(fā)布時間:2025/4/17 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pytorch 查看当前学习率_pytorch调整模型训练的学习率 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡介

torch.optim.lr_scheduler :提供了一些方法可以基于epochs的值來調(diào)整學習率。

torch.optim.lr_scheduler.ReduceLROnPlateau :則提供了基于訓練中某些測量值使學習率動態(tài)下降的方法。

注意:學習率調(diào)整應該在優(yōu)化器的更新之后,例如:

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

警告:在PyTorch 1.1.0之前,學習率調(diào)整程序應在優(yōu)化程序更新之前調(diào)用。也就是如果你在optimizer.step()這句代碼之前使用scheduler.step(),會跳過學習率的第一個值。

一、用lamda函數(shù)作為學習率的乘積因子更新學習率

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

將每個參數(shù)組的學習率設置為:初始化學習率

lambda函數(shù)。當last_epoch = -1時,將初始學習率設置為lr。

optimizer:優(yōu)化器

lr_lambda:函數(shù)或者函數(shù)列表,用來計算乘積因子,通常epoch為函數(shù)參數(shù)。當為函數(shù)列表的時候可以為optimizer.param_groups中的每個參數(shù)組設置學習率。

last_epoch:默認為-1,一般不用管

二、用列表的元素控制衰退時機

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

一旦訓練過程中epoch的數(shù)目達到milestones中的數(shù)值后,每一組參數(shù)的學習率會乘以gamma進行一次衰減。

milestones:列表的每個元素表示訓練到這個epoch的時候?qū)W習率會衰減一次。

gamma:衰減因子

注意:一定要用get_last_lr(),而不是以前的get_lr(),不然打印的輸出信息會有點小問題,這里有個坑小心。

三、固定步長的學習率衰減

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

每訓練step_size個epochs,每組參數(shù)就會衰減一次學習率。

step_size:決定學習率衰減的時期

gamma:衰減因子

四、每訓練一個epoch,學習率衰減一次

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

五、余弦退火調(diào)整學習率

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

學習率調(diào)整公式:

右邊的函數(shù)周期為

,在 個epoch后降到最低學習率 ,然后學習率在接下來 個epoch后上升到

:初始的學習率

:迭代過程中最小的學習率

:當前的epoch的數(shù)目

:lr的變化是周期性的,T_max是周期的一半。

舉例子:比如

,初始學習率為0.1,最小學習率為0,如下圖:

六、根據(jù)訓練中某些度量值(指標)動態(tài)的調(diào)節(jié)學習率

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

當某一項指標停止往好的趨勢變化的時候,通過調(diào)整學習率可以使模型受益。例如驗證集的loss不再下降或者accuracy不再上升時,進行學習率調(diào)整。

mode(str):有min和max兩種模式。min模式表示指標不再降低的時候降低學習率,max模式表示指標不再上升的時候降低學習率。

factor(float):學習率調(diào)整的倍數(shù),new_lr = lr * factor.

patience(int):所能忍耐的多少個epoch迭代,指標卻不改善。比如為2時,表示可以最大程度接受連續(xù)兩個epoch沒有改善指標,當?shù)谌齻€epoch仍然沒有改善的時候,馬上降低學習率。

threshhold_mode(str):有rel和abs兩種模式

threshhold(float):

上面這兩個參數(shù)我沒弄懂,如果有懂得給我留個言,哈哈

min_lr(float or list):學習率的下限,如果有多個參數(shù)組的話,需要為每一個參數(shù)組設置,可以為一個列表。

eps(float):學習率衰減的最小值,當學習率變化小于eps,則不調(diào)整學習率。

注意:使用的時候要選擇網(wǎng)絡的度量指標,比如要用scheduler.step(train_loss)這種代碼,表明監(jiān)控哪一種指標。

總結(jié)

以上是生活随笔為你收集整理的pytorch 查看当前学习率_pytorch调整模型训练的学习率的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。