欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Pytorch實(shí)現(xiàn)將模型的所有參數(shù)的梯度清0

 更新時(shí)間:2020年06月24日 11:01:52   作者:Vic時(shí)代  
這篇文章主要介紹了Pytorch實(shí)現(xiàn)將模型的所有參數(shù)的梯度清0,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

有兩種方式直接把模型的參數(shù)梯度設(shè)成0:

model.zero_grad()
optimizer.zero_grad()#當(dāng)optimizer=optim.Optimizer(model.parameters())時(shí),兩者等效

如果想要把某一Variable的梯度置為0,只需用以下語(yǔ)句:

Variable.grad.data.zero_()

補(bǔ)充知識(shí):PyTorch中在反向傳播前為什么要手動(dòng)將梯度清零?optimizer.zero_grad()的意義

optimizer.zero_grad()意思是把梯度置零,也就是把loss關(guān)于weight的導(dǎo)數(shù)變成0.

在學(xué)習(xí)pytorch的時(shí)候注意到,對(duì)于每個(gè)batch大都執(zhí)行了這樣的操作:

optimizer.zero_grad()             ## 梯度清零
preds = model(inputs)             ## inference
loss = criterion(preds, targets)  ## 求解loss
loss.backward()                   ## 反向傳播求解梯度
optimizer.step()                  ## 更新權(quán)重參數(shù)

1、由于pytorch的動(dòng)態(tài)計(jì)算圖,當(dāng)我們使用loss.backward()和opimizer.step()進(jìn)行梯度下降更新參數(shù)的時(shí)候,梯度并不會(huì)自動(dòng)清零。并且這兩個(gè)操作是獨(dú)立操作。

2、backward():反向傳播求解梯度。

3、step():更新權(quán)重參數(shù)。

基于以上幾點(diǎn),正好說(shuō)明了pytorch的一個(gè)特點(diǎn)是每一步都是獨(dú)立功能的操作,因此也就有需要梯度清零的說(shuō)法,如若不顯示的進(jìn) optimizer.zero_grad()這一步操作,backward()的時(shí)候就會(huì)累加梯度。

以上這篇Pytorch實(shí)現(xiàn)將模型的所有參數(shù)的梯度清0就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論