Deep learning 属性错误:';非类型';对象没有属性';零';

Deep learning 属性错误:';非类型';对象没有属性';零';,deep-learning,pytorch,Deep Learning,Pytorch,如果展开表达式,渐变子对象将变为“无”。不知道为什么?谁能给点线索吗。 如果将w.grand.zero_u2;()展开,抛出错误为“AttributeError:'NoneType'对象没有属性'zero_2;”” 谢谢, 甘尼什 问题是,在工作代码中,您正在修改具有grad属性的现有变量,而在非工作情况下,您正在创建一个新变量 创建新的w1/b1变量时,它没有渐变属性,因为您没有对其调用backward(),而是对“原始”变量调用 首先,让我们看看是否真的是这样: print(id(w1))

如果展开表达式,渐变子对象将变为“无”。不知道为什么?谁能给点线索吗。 如果将w.grand.zero_u2;()展开,抛出错误为“AttributeError:'NoneType'对象没有属性'zero_2;”

谢谢, 甘尼什


问题是,在工作代码中,您正在修改具有
grad
属性的现有变量,而在
非工作
情况下,您正在创建一个新变量

创建新的
w1
/
b1
变量时,它没有渐变属性,因为您没有对其调用
backward()
,而是对“原始”变量调用

首先,让我们看看是否真的是这样:

print(id(w1)) # Some id returned here
w1 = w1 - learning_rate * w1.grad

# In case below w1 address doesn't change
# w1 -= learning_rate * w1.grad 

print(id(w1)) # Another id here
现在,您可以将其复制到适当的位置,而不必对其进行制动,但这样做没有任何意义,您的工作案例也更加清晰,但为了子孙后代:

w1.copy_(w1 - learning_rate * w1.grad)

你问错问题了。您应该问问自己,为什么您有一个
NoneType
(即值
None
),而不是您的代码所期望的值。另外,问问你自己,为什么你的代码会这样。@UlrichEckhardt,我刚刚粘贴了整个代码,这样任何人都可以复制和粘贴以执行更多的细节。
w1.copy_(w1 - learning_rate * w1.grad)