【调试问题】RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn

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

出现这种错误是因为,构建Variable, 要注意得传入一个参数requires_grad=True, 这个参数表示是否对这个变量求梯度, 默认的是False, 也就是不对这个变量求梯度。
错误代码

import torch
x=torch.randn(3)#生成一维随机数
y=x*2
y.backward(torch.FloatTensor([1,0.1,0.01]))#自动求导
print(x.grad)#求对x的梯度

错误提示

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

正确代码

import torch
x=torch.randn(3)
x=Variable(x,requires_grad=True)#生成变量
print(x)#输出x的值
y=x*2
y.backward(torch.FloatTensor([1,0.1,0.01]))#自动求导
print(x.grad)#求对x的梯度

输出

tensor([-0.1549,  0.8560,  0.2398], requires_grad=True)
tensor([2.0000, 0.2000, 0.0200])

猜你喜欢

转载自blog.csdn.net/weixin_41990278/article/details/90311313