pytorch中網(wǎng)絡(luò)loss傳播和參數(shù)更新的示例分析-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)pytorch中網(wǎng)絡(luò)loss傳播和參數(shù)更新的示例分析,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

十載專注成都網(wǎng)站制作,成都定制網(wǎng)站,個(gè)人網(wǎng)站制作服務(wù),為大家分享網(wǎng)站制作知識(shí)、方案,網(wǎng)站設(shè)計(jì)流程、步驟,成功服務(wù)上千家企業(yè)。為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù),專注于成都定制網(wǎng)站,高端網(wǎng)頁(yè)制作,對(duì)成都輕質(zhì)隔墻板等多個(gè)行業(yè),擁有多年的網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn)。

相比于2018年,在ICLR2019提交論文中,提及不同框架的論文數(shù)量發(fā)生了極大變化,網(wǎng)友發(fā)現(xiàn),提及tensorflow的論文數(shù)量從2018年的228篇略微提升到了266篇,keras從42提升到56,但是pytorch的數(shù)量從87篇提升到了252篇。

TensorFlow: 228--->266

Keras: 42--->56

Pytorch: 87--->252

在使用pytorch中,自己有一些思考,如下:

1. loss計(jì)算和反向傳播

import torch.nn as nn
 
criterion = nn.MSELoss().cuda()
 
output = model(input)
 
loss = criterion(output, target)
loss.backward()

通過(guò)定義損失函數(shù):criterion,然后通過(guò)計(jì)算網(wǎng)絡(luò)真實(shí)輸出和真實(shí)標(biāo)簽之間的誤差,得到網(wǎng)絡(luò)的損失值:loss;

最后通過(guò)loss.backward()完成誤差的反向傳播,通過(guò)pytorch的內(nèi)在機(jī)制完成自動(dòng)求導(dǎo)得到每個(gè)參數(shù)的梯度。

需要注意,在機(jī)器學(xué)習(xí)或者深度學(xué)習(xí)中,我們需要通過(guò)修改參數(shù)使得損失函數(shù)最小化或大化,一般是通過(guò)梯度進(jìn)行網(wǎng)絡(luò)模型的參數(shù)更新,通過(guò)loss的計(jì)算和誤差反向傳播,我們得到網(wǎng)絡(luò)中,每個(gè)參數(shù)的梯度值,后面我們?cè)偻ㄟ^(guò)優(yōu)化算法進(jìn)行網(wǎng)絡(luò)參數(shù)優(yōu)化更新。

2. 網(wǎng)絡(luò)參數(shù)更新

在更新網(wǎng)絡(luò)參數(shù)時(shí),我們需要選擇一種調(diào)整模型參數(shù)更新的策略,即優(yōu)化算法。

優(yōu)化算法中,簡(jiǎn)單的有一階優(yōu)化算法:

pytorch中網(wǎng)絡(luò)loss傳播和參數(shù)更新的示例分析

其中pytorch中網(wǎng)絡(luò)loss傳播和參數(shù)更新的示例分析 就是通常說(shuō)的學(xué)習(xí)率,pytorch中網(wǎng)絡(luò)loss傳播和參數(shù)更新的示例分析 是函數(shù)的梯度;

自己的理解是,對(duì)于復(fù)雜的優(yōu)化算法,基本原理也是這樣的,不過(guò)計(jì)算更加復(fù)雜。

在pytorch中,torch.optim是一個(gè)實(shí)現(xiàn)各種優(yōu)化算法的包,可以直接通過(guò)這個(gè)包進(jìn)行調(diào)用。

optimizer = torch.optim.Adam(model.parameters(), lr=0.01)

注意:

1)在前面部分1中,已經(jīng)通過(guò)loss的反向傳播得到了每個(gè)參數(shù)的梯度,然后再本部分通過(guò)定義優(yōu)化器(優(yōu)化算法),確定了網(wǎng)絡(luò)更新的方式,在上述代碼中,我們將模型的需要更新的參數(shù)傳入優(yōu)化器。

2)注意優(yōu)化器,即optimizer中,傳入的模型更新的參數(shù),對(duì)于網(wǎng)絡(luò)中有多個(gè)模型的網(wǎng)絡(luò),我們可以選擇需要更新的網(wǎng)絡(luò)參數(shù)進(jìn)行輸入即可,上述代碼,只會(huì)更新model中的模型參數(shù)。對(duì)于需要更新多個(gè)模型的參數(shù)的情況,可以參考以下代碼:

optimizer = torch.optim.Adam([{'params': model.parameters()}, {'params': gru.parameters()}], lr=0.01) 3) 在優(yōu)化前需要先將梯度歸零,即optimizer.zeros()。

3. loss計(jì)算和參數(shù)更新

import torch.nn as nn
import torch
 
criterion = nn.MSELoss().cuda()
optimizer = torch.optim.Adam(model.parameters(), lr=0.01)
 
output = model(input)
 
loss = criterion(output, target)
 
optimizer.zero_grad() # 將所有參數(shù)的梯度都置零
loss.backward()    # 誤差反向傳播計(jì)算參數(shù)梯度
optimizer.step()    # 通過(guò)梯度做一步參數(shù)更新

關(guān)于“pytorch中網(wǎng)絡(luò)loss傳播和參數(shù)更新的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

當(dāng)前名稱:pytorch中網(wǎng)絡(luò)loss傳播和參數(shù)更新的示例分析-創(chuàng)新互聯(lián)
分享地址:http://muchs.cn/article40/dgidho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、響應(yīng)式網(wǎng)站、網(wǎng)站建設(shè)企業(yè)網(wǎng)站制作、電子商務(wù)網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司