本文共 639 字,大约阅读时间需要 2 分钟。
## nn criterions don’t compute the gradient w.r.t. targets - please mark these tensors as not requiring gradients
可以看到这是一个断言错误,就是我们设置的东西和系统设置的东西不太兼容,所以我们要再次设置一下。
我们看一下后面说的东西,nn的原则告诉我们这里是不需要计算梯度的,所以请将这些张量定义为不需要计算梯度。
所以是我们将某些需要计算梯度的东西传到了不计算梯度的地方。
我们看错误的位置,
48 target = torch.randn_like(output) 49 #这里可能产生一个报错在下面详细叙述
—> 50 loss = loss_fnc(target, output)
51 #loss = loss_fnc(output, target) 52 loss.backward()传入的东西就两个一个target一个output。
显然,需要计算梯度的是output,所以是他的位置不对。
参考https://discuss.pytorch.org/t/nn-criterions-dont-compute-the-gradient-w-r-t-targets/3693/4
我们知道在进行反向传播的时候,损失函数可以计算梯度的只有前一位的输入,后一位不能计算梯度。
所以我们调换一下顺序就行了。
转载地址:http://skywi.baihongyu.com/