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

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

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

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

model.zero_grad()
optimizer.zero_grad()#當optimizer=optim.Optimizer(model.parameters())時,兩者等效

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

Variable.grad.data.zero_()

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

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

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

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

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

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

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

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

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

相關(guān)文章

最新評論