Pytorch,即使在最简单的网络上也无法运行backward()而不出现错误

Fun*_*nzo 2 machine-learning neural-network feed-forward pytorch

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

(Linear(6, 6)(Variable(torch.zeros([10, 6]))) - Variable(torch.zeros([10, 6]))).backward()
Run Code Online (Sandbox Code Playgroud)

抛出以下错误

{RuntimeError}element 0 of variables does not require grad and does not have a grad_fn
Run Code Online (Sandbox Code Playgroud)

我在代码中做错了什么导致了这个问题?

RTY*_*TYX 5

当PyTorch无法找到具有 的模型参数requires_grad = True(即所有模型参数具有 )时,会发生此错误requires_grad = False

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

您始终必须小心放置此内容的位置:

for param in model.parameters():
    param.requires_grad = False
Run Code Online (Sandbox Code Playgroud)