RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn

出错位置:
loss = loss1 + loss2
........
loss.backward()
原因: 这里的loss默认的requires_grad是False,因此在backward()处不会计算梯度,导致出错
方法:将loss的requires_grad属性设为True,如下所示:
loss = loss1 + loss2
loss.requires_grad_(True) #加入此句就行了
........
loss.backward()
在训练深度学习模型时,遇到RuntimeError提示元素不需要梯度且没有grad_fn。原因是损失函数loss的requires_grad属性默认为False,无法进行反向传播。解决方法是在调用 backward() 之前,通过loss.requires_grad_(True)设置其要求梯度,从而允许计算梯度并继续训练过程。

2万+

被折叠的 条评论
为什么被折叠?



