嗨,我开始学习 pytorch。当我尝试重置权重和偏差梯度时,我得到了 27 b.grad.zero_()
AttributeError:“NoneType”对象没有属性“zero_”错误。
input = torch.tensor([73,67,43,91,88,64,87,134,58,102,43,37,69,96,70],dtype=torch.float32)
inputnew = input.reshape(5,3)
target = torch.tensor([56,70,81,101,119,133,22,37,103,119])
targetnew = target.reshape(5,2)
w = torch.randn(2,3,requires_grad = True)
b = torch.randn(2,requires_grad = True)
def model(x):
return x @ w.t()+ b
islem= model(inputnew)
def fix(real,pred):
diff = real-pred
return torch.sum((diff*diff)/diff.numel())
loss = fix(targetnew,islem)
for i in range(100):
islem = model(inputnew)
loss = fix(targetnew,islem)
loss.backward()
with torch.no_grad():
w=w- w.grad*1e-5
b=b-b.grad*1e-5
w.grad.zero_()
b.grad.zero_()
我该如何解决?谢谢
w = w - w.grad * 1e-5
创建一个新张量并将其分配给w
。这会破坏链接,导致 w.grad
设置为 None
。
要修复它,您应该将张量更新为
w -= w.grad * 1e-5
:
with torch.no_grad():
w -= w.grad * 1e-5
b -= b.grad * 1e-5
w.grad.zero_()
b.grad.zero_()