Pytorch反向求導(dǎo)更新網(wǎng)絡(luò)參數(shù)的方法
方法一:手動(dòng)計(jì)算變量的梯度,然后更新梯度
import torch from torch.autograd import Variable # 定義參數(shù) w1 = Variable(torch.FloatTensor([1,2,3]),requires_grad = True) # 定義輸出 d = torch.mean(w1) # 反向求導(dǎo) d.backward() # 定義學(xué)習(xí)率等參數(shù) lr = 0.001 # 手動(dòng)更新參數(shù) w1.data.zero_() # BP求導(dǎo)更新參數(shù)之前,需先對(duì)導(dǎo)數(shù)置0 w1.data.sub_(lr*w1.grad.data)
一個(gè)網(wǎng)絡(luò)中通常有很多變量,如果按照上述的方法手動(dòng)求導(dǎo),然后更新參數(shù),是很麻煩的,這個(gè)時(shí)候可以調(diào)用torch.optim
方法二:使用torch.optim
import torch from torch.autograd import Variable import torch.nn as nn import torch.optim as optim # 這里假設(shè)我們定義了一個(gè)網(wǎng)絡(luò),為net steps = 10000 # 定義一個(gè)optim對(duì)象 optimizer = optim.SGD(net.parameters(), lr = 0.01) # 在for循環(huán)中更新參數(shù) for i in range(steps): optimizer.zero_grad() # 對(duì)網(wǎng)絡(luò)中參數(shù)當(dāng)前的導(dǎo)數(shù)置0 output = net(input) # 網(wǎng)絡(luò)前向計(jì)算 loss = criterion(output, target) # 計(jì)算損失 loss.backward() # 得到模型中參數(shù)對(duì)當(dāng)前輸入的梯度 optimizer.step() # 更新參數(shù)
注意:torch.optim只用于參數(shù)更新和對(duì)參數(shù)的梯度置0,不能計(jì)算參數(shù)的梯度,在使用torch.optim進(jìn)行參數(shù)更新之前,需要寫前向與反向傳播求導(dǎo)的代碼
以上這篇Pytorch反向求導(dǎo)更新網(wǎng)絡(luò)參數(shù)的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 使用pytorch進(jìn)行張量計(jì)算、自動(dòng)求導(dǎo)和神經(jīng)網(wǎng)絡(luò)構(gòu)建功能
- pytorch如何定義新的自動(dòng)求導(dǎo)函數(shù)
- 在?pytorch?中實(shí)現(xiàn)計(jì)算圖和自動(dòng)求導(dǎo)
- Pytorch自動(dòng)求導(dǎo)函數(shù)詳解流程以及與TensorFlow搭建網(wǎng)絡(luò)的對(duì)比
- 淺談Pytorch中的自動(dòng)求導(dǎo)函數(shù)backward()所需參數(shù)的含義
- pytorch中的自定義反向傳播,求導(dǎo)實(shí)例
- 關(guān)于PyTorch 自動(dòng)求導(dǎo)機(jī)制詳解
- 關(guān)于pytorch求導(dǎo)總結(jié)(torch.autograd)
相關(guān)文章
Python通用驗(yàn)證碼識(shí)別OCR庫ddddocr的安裝使用教程
dddd_ocr是一個(gè)用于識(shí)別驗(yàn)證碼的開源庫,又名帶帶弟弟ocr,下面這篇文章主要給大家介紹了關(guān)于Python通用驗(yàn)證碼識(shí)別OCR庫ddddocr的安裝使用教程,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07Python灰度變換中伽馬變換分析實(shí)現(xiàn)
灰度變換是指根據(jù)某種目標(biāo)條件按一定變換關(guān)系逐點(diǎn)改變?cè)磮D像中每個(gè)像素灰度值的方法。目的是改善畫質(zhì),使圖像顯示效果更加清晰。圖像的灰度變換處理是圖像增強(qiáng)處理技術(shù)中的一種非?;A(chǔ)、直接的空間域圖像處理方法,也是圖像數(shù)字化軟件和圖像顯示軟件的一個(gè)重要組成部分2022-10-10Python數(shù)據(jù)結(jié)構(gòu)之樹的全面解讀
數(shù)據(jù)結(jié)構(gòu)中有很多樹的結(jié)構(gòu),其中包括二叉樹、二叉搜索樹、2-3樹、紅黑樹等等。本文中對(duì)數(shù)據(jù)結(jié)構(gòu)中常見的樹邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)進(jìn)行了匯總,不求嚴(yán)格精準(zhǔn),但求簡單易懂2021-11-11python 實(shí)現(xiàn)在txt指定行追加文本的方法
下面小編就為大家分享一篇python 實(shí)現(xiàn)在txt指定行追加文本的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-04-04python使用正則表達(dá)式匹配txt特定字符串(有換行)
這篇文章主要給大家介紹了關(guān)于python使用正則表達(dá)式匹配txt特定字符串的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12pandas參數(shù)設(shè)置的實(shí)用小技巧
這篇文章主要給大家介紹了關(guān)于pandas參數(shù)設(shè)置的實(shí)用小技巧,文中通過實(shí)例代碼結(jié)束的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用pandas具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08