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()实现的。

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