pytorch中调整学习率的lr_scheduler机制
pytorch中調(diào)整學習率的lr_scheduler機制
</h1><div class="clear"></div><div class="postBody">
有的時候需要我們通過一定機制來調(diào)整學習率,這個時候可以借助于torch.optim.lr_scheduler類來進行調(diào)整;一般地有下面兩種調(diào)整策略:(通過兩個例子來展示一下)
兩種機制:LambdaLR機制和StepLR機制;
(1)LambdaLR機制:
optimizer_G = torch.optim.Adam([{'params' : optimizer_G.parameters() , 'initial_lr' : train_opt.lr}] , lr = train_opt.lr , betas = (train_opt.betal , 0.999))
lambda_G = lambda epoch : 0.5 ** (epoch // 30)
schduler_G = torch.optim.lr_scheduler.LambdaLR(optimizer_G.parameters() , lambda_G , last_epoch = 29);
scheduler.step()
lr = schduler.get_lr()[0];? //這里記得加一個[0]的索引!
for param_group in optimizer_G.param_groups():
param_group['lr'] = lr
解釋:last_epoch是開始的前一個epoch的索引值,這里為29表示從epoch = 30開始(其中scheduler類中的epoch從last_epoch + 1開始,每次step操作epoch加1),學習率調(diào)整為lr * (0.5 ** (epoch // 30));另外注意的是:定義optimizer_G類時,需要寫成上述那種形式,不要寫成以前常見的“optimizer_G = torch.optim.Adam(params = optimizer_G.parameters()...)”,要像這里一樣寫成字典形式;否則lr_scheduler類會報“沒有initial_lr的錯誤”
(2)StepLR機制:
schduler_G = torch.optim.lr_scheduler.StepLR(optimizer_G.parameters() , step_size = 30 , gamma = 0.1 , last_epoch = 29)
其他的和上面類似,這里的調(diào)整策略如下:
?
分類: pytorch<div id="blog_post_info">
好文要頂 關(guān)注我 收藏該文
outthinker關(guān)注 - 9
粉絲 - 115 +加關(guān)注 0 0
<div class="clear"></div>
<div id="post_next_prev"><a href="https://www.cnblogs.com/zf-blog/p/11242712.html" class="p_n_p_prefix">? </a> 上一篇: <a href="https://www.cnblogs.com/zf-blog/p/11242712.html" title="發(fā)布于 2019-07-25 10:37">pix2pix&Cycle GAN&pix2pix HD</a>
<br>
<a href="https://www.cnblogs.com/zf-blog/p/11360557.html" class="p_n_p_prefix">? </a> 下一篇: <a href="https://www.cnblogs.com/zf-blog/p/11360557.html" title="發(fā)布于 2019-08-15 21:06">pytorch 中Dataloader中的collate_fn參數(shù)</a>
posted @ 2019-07-29 11:24? outthinker? 閱讀(2121)? 評論(0)? 編輯 收藏
總結(jié)
以上是生活随笔為你收集整理的pytorch中调整学习率的lr_scheduler机制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Distilling the Knowl
- 下一篇: 用python下载文件的若干种方法汇总