這期內容當中小編將會給大家帶來有關pytorch實現查看當前學習率的方法,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
print(net.optimizer.state_dict()['param_groups'][0]['lr'])
補充知識:Pytorch:代碼實現不同層設置不同的學習率,選擇性學習某些層參數
1,如何動態調整學習率
在使用pytorch進行模型訓練時,經常需要隨著訓練的進行逐漸降低學習率,在pytorch中給出了非常方面的方法:
假設我們定義了一個優化器:
import torch import torch.nn as nn optimizer = torch.optim(model.parameters(), lr = 0.01, momentum = 0.9)
該優化器的初始化學習為0.01,
如果我們學習每個"n" 個epoch把學習率降低為原來的0.9倍,則需要聲明一個學習率調節器:
torch.optim.lr_scheduler.StepLR(optimizer, step_size, gamma=0.1, last_epoch=-1)
其中:
optimizer: 前面聲明的優化器;
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,如何選擇性學習某些參數
對于我們現有的模型model,通過調整參數的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()
獲取該模塊,然后通過迭代索引的方式獲取參數:
for name, param in sub_block.named_parameters()
上述就是小編為大家分享的pytorch實現查看當前學習率的方法了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。