佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > pytorch損失反向傳播后梯度為none的問題

pytorch損失反向傳播后梯度為none的問題

熱門標(biāo)簽:百度AI接口 語音系統(tǒng) 呼叫中心市場需求 客戶服務(wù) 電話運營中心 Win7旗艦版 硅谷的囚徒呼叫中心 企業(yè)做大做強

錯誤代碼:輸出grad為none

a = torch.ones((2, 2), requires_grad=True).to(device)
b = a.sum()
b.backward()
print(a.grad)

由于.to(device)是一次操作,此時的a已經(jīng)不是葉子節(jié)點了

修改后的代碼為:

a = torch.ones((2, 2), requires_grad=True)
c = a.to(device)

b = c.sum()
b.backward()
print(a.grad)

類似錯誤:

self.miu = torch.nn.Parameter(torch.ones(self.dimensional)) * 0.01

應(yīng)該為

self.miu = torch.nn.Parameter(torch.ones(self.dimensional) * 0.01)

補充:pytorch梯度返回none的bug

pytorch1.4.0如果使用了view方法,reshape方法

tensor即使設(shè)置了requires_grad,反向傳播之后, x返回沒有g(shù)rad梯度,為none

不知道其他版本有無此bug

補充:PyTorch中梯度反向傳播的注意點

在一個迭代循環(huán)中

optimizer.zero_grad()語句的位置比較隨意,只要放在loss.backward()前面即可,它的作用是將梯度歸零,否則會在每一個迭代中進行累加,

loss.backward()的作用是反向傳播,計算梯度,optimizer.step()的功能是優(yōu)化器自動完成參數(shù)的更新。

optimizer.zero_grad()
loss.backward()
optimizer.step()

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 淺談pytorch中為什么要用 zero_grad() 將梯度清零
  • PyTorch梯度裁剪避免訓(xùn)練loss nan的操作
  • PyTorch 如何自動計算梯度
  • Pytorch獲取無梯度TorchTensor中的值
  • pytorch 如何打印網(wǎng)絡(luò)回傳梯度
  • PyTorch 如何檢查模型梯度是否可導(dǎo)

標(biāo)簽:長沙 濟南 喀什 山西 安康 海南 山西 崇左

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《pytorch損失反向傳播后梯度為none的問題》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    修水县| 华坪县| 孝昌县| 周至县| 浪卡子县| 麟游县| 彭州市| 九寨沟县| 咸宁市| 江西省| 鄂尔多斯市| 苏州市| 玉林市| 济阳县| 廉江市| 佛学| 博罗县| 康平县| 沅江市| 阜新| 奎屯市| 厦门市| 株洲市| 田东县| 永兴县| 郓城县| 凭祥市| 丰城市| 万荣县| 香港| 霍城县| 扶绥县| 婺源县| 沙田区| 电白县| 上高县| 华宁县| 乌海市| 福清市| 福建省| 南汇区|