RuntimeError: there are no graph nodes that require computing gradients

    技术2022-07-13  91

    问题描述

    在计算两个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()实现的。

    Processed: 0.015, SQL: 9