pytorch實現(xiàn)查看當前學習率
在pytorch訓練過程中可以通過下面這一句代碼來打印當前學習率
print(net.optimizer.state_dict()['param_groups'][0]['lr'])
補充知識:Pytorch:代碼實現(xiàn)不同層設置不同的學習率,選擇性學習某些層參數(shù)
1,如何動態(tài)調整學習率
在使用pytorch進行模型訓練時,經(jīng)常需要隨著訓練的進行逐漸降低學習率,在pytorch中給出了非常方面的方法:
假設我們定義了一個優(yōu)化器:
import torch import torch.nn as nn optimizer = torch.optim(model.parameters(), lr = 0.01, momentum = 0.9)
該優(yōu)化器的初始化學習為0.01,
如果我們學習每個"n" 個epoch把學習率降低為原來的0.9倍,則需要聲明一個學習率調節(jié)器:
torch.optim.lr_scheduler.StepLR(optimizer, step_size, gamma=0.1, last_epoch=-1)
其中:
optimizer: 前面聲明的優(yōu)化器;
step_size: 每step_size個epoch學習率降低為原來的gamma倍,
last_epoch: 當前所處的epoch
例如:
# Assuming optimizer uses lr = 0.05 for all groups # lr = 0.05 if epoch < 30 # lr = 0.005 if 30 <= epoch < 60 # lr = 0.0005 if 60 <= epoch < 90 # ... scheduler = StepLR(optimizer, step_size=30, gamma=0.1) for epoch in range(100): scheduler.step() train(...) validate(...)
另外其他常用的更新策略類似:
torch.optim.lr_scheduler.ExponentialLR(optimizer, gamma, last_epoch=-1)
torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max, eta_min=0, last_epoch=-1)
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)
torch.optim.lr_scheduler.LambdaLR(optimizer, lr_lambda, last_epoch=-1)
2,如何選擇性學習某些參數(shù)
對于我們現(xiàn)有的模型model,通過調整參數(shù)的requires_grad 屬性控制該模型是否參與求導運算
for name, param in model.named_parameters(): if param.requires_grad: print("requires_grad: True ", name) else: print("requires_grad: False ", name)
如果模型中包含多個子模塊,可用通過
sub_block = model.children()
獲取該模塊,然后通過迭代索引的方式獲取參數(shù):
for name, param in sub_block.named_parameters()
以上這篇pytorch實現(xiàn)查看當前學習率就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
django模型層(model)進行建表、查詢與刪除的基礎教程
這篇文章主要給大家介紹了關于django模型層(model)進行建表、查詢與刪除的等基礎操作的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。2017-11-11Django中的WebSocket實時通信的實現(xiàn)小結
在Django中,使用WebSocket可以實現(xiàn)實時通信,例如聊天應用、實時更新等,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-05-05Python中的copy()函數(shù)詳解(list,array)
這篇文章主要介紹了Python中的copy()函數(shù)詳解(list,array),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09