Pytorch,即使在最简单的网络上也不能 运行 backward() 而不会出错
Pytorch, can't run backward() on even the most simple network without getting an error
我是 pytorch 的新手,即使在最简单的网络上我也无法 运行 backward() 而不产生错误。
例如:
(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
我在代码中做错了什么导致了这个问题?
尝试添加一个 grad_output 匹配形状作为向后的参数:
(线性(6, 6)(变量(torch.zeros([10, 6]))) - 变量(torch.zeros([10, 6]))).backward(torch.zeros([10, 6]))
下面的回答有更多的细节:
当 PyTorch 找不到具有 requires_grad = True
的模型参数时会发生此错误,即所有模型参数都具有 requires_grad = False
.
有不同的原因,但可能是您冻结了所有模型,或者您没有正确交换模型的最后一层 - 例如,在 rest net 中它应该是 model.fc
而不是 model.classifier
-.
你总是要小心你把这个放在哪里:
for param in model.parameters():
param.requires_grad = False
我是 pytorch 的新手,即使在最简单的网络上我也无法 运行 backward() 而不产生错误。 例如:
(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
我在代码中做错了什么导致了这个问题?
尝试添加一个 grad_output 匹配形状作为向后的参数:
(线性(6, 6)(变量(torch.zeros([10, 6]))) - 变量(torch.zeros([10, 6]))).backward(torch.zeros([10, 6]))
下面的回答有更多的细节:
当 PyTorch 找不到具有 requires_grad = True
的模型参数时会发生此错误,即所有模型参数都具有 requires_grad = False
.
有不同的原因,但可能是您冻结了所有模型,或者您没有正确交换模型的最后一层 - 例如,在 rest net 中它应该是 model.fc
而不是 model.classifier
-.
你总是要小心你把这个放在哪里:
for param in model.parameters():
param.requires_grad = False