pytorch實(shí)現(xiàn)查看當(dāng)前學(xué)習(xí)率
在pytorch訓(xùn)練過(guò)程中可以通過(guò)下面這一句代碼來(lái)打印當(dāng)前學(xué)習(xí)率
print(net.optimizer.state_dict()['param_groups'][0]['lr'])
補(bǔ)充知識(shí):Pytorch:代碼實(shí)現(xiàn)不同層設(shè)置不同的學(xué)習(xí)率,選擇性學(xué)習(xí)某些層參數(shù)
1,如何動(dòng)態(tài)調(diào)整學(xué)習(xí)率
在使用pytorch進(jìn)行模型訓(xùn)練時(shí),經(jīng)常需要隨著訓(xùn)練的進(jìn)行逐漸降低學(xué)習(xí)率,在pytorch中給出了非常方面的方法:
假設(shè)我們定義了一個(gè)優(yōu)化器:
import torch import torch.nn as nn optimizer = torch.optim(model.parameters(), lr = 0.01, momentum = 0.9)
該優(yōu)化器的初始化學(xué)習(xí)為0.01,
如果我們學(xué)習(xí)每個(gè)"n" 個(gè)epoch把學(xué)習(xí)率降低為原來(lái)的0.9倍,則需要聲明一個(gè)學(xué)習(xí)率調(diào)節(jié)器:
torch.optim.lr_scheduler.StepLR(optimizer, step_size, gamma=0.1, last_epoch=-1)
其中:
optimizer: 前面聲明的優(yōu)化器;
step_size: 每step_size個(gè)epoch學(xué)習(xí)率降低為原來(lái)的gamma倍,
last_epoch: 當(dāng)前所處的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(...)
另外其他常用的更新策略類(lèi)似:
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,如何選擇性學(xué)習(xí)某些參數(shù)
對(duì)于我們現(xiàn)有的模型model,通過(guò)調(diào)整參數(shù)的requires_grad 屬性控制該模型是否參與求導(dǎo)運(yùn)算
for name, param in model.named_parameters():
if param.requires_grad:
print("requires_grad: True ", name)
else:
print("requires_grad: False ", name)
如果模型中包含多個(gè)子模塊,可用通過(guò)
sub_block = model.children()
獲取該模塊,然后通過(guò)迭代索引的方式獲取參數(shù):
for name, param in sub_block.named_parameters()
以上這篇pytorch實(shí)現(xiàn)查看當(dāng)前學(xué)習(xí)率就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Pandas 重塑(stack)和軸向旋轉(zhuǎn)(pivot)的實(shí)現(xiàn)
這篇文章主要介紹了Pandas 重塑(stack)和軸向旋轉(zhuǎn)(pivot)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Python使用列表和字典實(shí)現(xiàn)簡(jiǎn)單的考試系統(tǒng)詳解
這篇文章主要介紹了Python使用列表和字典實(shí)現(xiàn)簡(jiǎn)單的考試系統(tǒng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-01-01
Python基于Opencv來(lái)快速實(shí)現(xiàn)人臉識(shí)別過(guò)程詳解(完整版)
這篇文章主要介紹了Python基于Opencv來(lái)快速實(shí)現(xiàn)人臉識(shí)別過(guò)程詳解(完整版)隨著人工智能的日益火熱,計(jì)算機(jī)視覺(jué)領(lǐng)域發(fā)展迅速,今天就為大家?guī)?lái)最基礎(chǔ)的人臉識(shí)別基礎(chǔ),從一個(gè)個(gè)函數(shù)開(kāi)始走進(jìn)這個(gè)奧妙的世界,需要的朋友可以參考下2019-07-07
使用C#配合ArcGIS Engine進(jìn)行地理信息系統(tǒng)開(kāi)發(fā)
這篇文章主要介紹了使用C#配合ArcGIS Engine進(jìn)行地理信息系統(tǒng)開(kāi)發(fā),ArcGIS Engine是Windows系統(tǒng)上可以讓程序員創(chuàng)建自定義的GIS桌面程序,需要的朋友可以參考下2016-02-02
PyCharm上安裝Package的實(shí)現(xiàn)(以pandas為例)
這篇文章主要介紹了PyCharm上安裝Package的實(shí)現(xiàn)(以pandas為例),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Python實(shí)現(xiàn)獲取網(wǎng)頁(yè)內(nèi)容及自動(dòng)填表單與登錄功能
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)模擬瀏覽器啟動(dòng),獲取網(wǎng)頁(yè)內(nèi)容、自動(dòng)填表單、自動(dòng)登錄、自動(dòng)過(guò)驗(yàn)證碼等功能,需要的可以參考一下2023-03-03
如何使用pytorch構(gòu)建高斯混合模型分類(lèi)器
本文是一個(gè)利用Pytorch構(gòu)建高斯混合模型分類(lèi)器的嘗試,我們將從頭開(kāi)始構(gòu)建高斯混合模型(GMM),這樣可以對(duì)高斯混合模型有一個(gè)最基本的理解,本文不會(huì)涉及數(shù)學(xué),需要的朋友可以參考下2023-10-10

