RuntimeError: there are no graph nodes that require computing gradients

問題描述

在計算兩個tensor的wassertein distance(記爲loss)後,執行

loss.backward()

報錯:

RuntimeError: there are no graph nodes that require computing gradients

 

問題原因

loss是中斷梯度傳播的變量,即:

(Pdb) loss.requires_grad
False

 

解決方法

把計算wassertein距離的最後一行:

loss = Variable(torch.from_numpy(Gs)).float().cuda()改爲:

loss = Variable(torch.from_numpy(Gs), requires_grad=True).float().cuda()

 

總結

計算loss並進行反向傳播時requires_grad非常重要。例如GAN訓練時固定生成器參數不變更新D就是通過.detach()實現的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章