1

我是 pytorch 的新手,即使在最简单的网络上也无法在不产生错误的情况下运行 back()。例如:

(Linear(6, 6)(Variable(torch.zeros([10, 6]))) - Variable(torch.zeros([10, 6]))).backward()

抛出以下错误

{RuntimeError}element 0 of variables does not require grad and does not have a grad_fn

我在创建此问题的代码中做错了什么?

4

2 回答 2

4

PyTorch找不到具有requires_grad = Trueie 所有模型参数的模型参数时,会发生此错误requires_grad = False

有不同的原因,但可能是您冻结了所有模型,或者您没有正确交换模型的最后一层 - 例如,在休息网络中它应该是model.fc而不是model.classifier-。

你总是要小心你把它放在哪里:

for param in model.parameters():
    param.requires_grad = False
于 2019-01-08T21:27:17.290 回答
2

尝试将匹配形状的 grad_output 作为参数添加到后向:

(线性(6, 6)(变量(torch.zeros([10, 6]))) - 变量(torch.zeros([10, 6]))).backward(torch.zeros([10, 6]) )

以下答案有更多详细信息:为什么只能在 1 个元素张量上或使用渐变到变量时向后调用函数?

于 2018-05-21T18:16:35.163 回答