pytorch运行错误:RuntimeError: a leaf Variable that requires grad is being used in an in-place operation

tensor 张量参与的运算,都会生成计算图,哪怕其中只有一个tensor,剩下的也都会被强制类型转换

因此每一步要分清实在构建计算图还是在更新值。

每一个tensor分为grad 梯度和data。grad也是一个tensor。如果要更新,务必确保参与运算的每一个元素都是值(非tensor)

出现报错的原因就是 更新值而错误的出现了tensor

 1 import torch
 2 x_data=[1,2,3]
 3 y_data=[2,4,6]
 4 w=torch.tensor(1.0,requires_grad=True)
 5 
 6 
 7 def forward(x):
 8     return x*w
 9 
10 def loss(x,y):
11     return (forward(x)-y)**2
12 
13 for epoch in range(100):
14 
15     for x,y in zip(x_data,y_data):
16         l=loss(x,y)
17         l.backward()
18 
19         w.data-=0.01*w.grad.item()
20         w.grad.zero_()
21         print(f"x={x},y={y},loss={l},w.grad:{w.grad.item()},w={w}")
22     print('epoch:{},w:{},loss:{}'.format(epoch,w,l))
23 print(w)

 

posted @ 2024-11-24 18:09  Link的学习之路  阅读(188)  评论(0)    收藏  举报