Pytorch 显示“NoneType”对象没有属性“zero_”向后错误

问题描述 投票:0回答:1

嗨,我开始学习 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_()

我该如何解决?谢谢

python pytorch
1个回答
0
投票

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_()
© www.soinside.com 2019 - 2024. All rights reserved.