[英]pytorch sets grad attribute to none if I use simple minus instead of -=
這是一個顯示問題的簡單代碼
import torch
X = torch.arange(-3, 3, step=0.1)
Y = X * 3
Y += 0.1 * torch.randn(Y.shape)
def my_train_model(iter):
w = torch.tensor(-15.0, requires_grad=True)
lr = 0.1
for epoch in range(iter):
print(w.grad)
yhat = w * X
loss = torch.mean((yhat - Y) ** 2)
loss.backward()
with torch.no_grad():
print(w.grad)
w = w - lr * w.grad # gradient exists if w-= lr*w.grad
print(w.grad)
w.grad.zero_()
print(loss)
my_train_model(4)
這在執行w = w - lr * w.grad
w.grad 設置為none
,但是如果我使用w -= lr * w.grad
而不是上面的表達式,問題將得到解決!
第一個將w.grad
設置為none
的表達式有什么問題?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.