import torch
x_data=[1.0,2.0,3.0]
y_data=[2.0,4.0,6.0]
w=torch.tensor([1.0])#将参数w声明为一个张量
w.requires_grad=True#声明跟踪w的梯度信息,使得可以PyTorch可以自动计算损失函数关于参数w的梯度
def forward(x):#预测函数
return x*w
def loss(x,y):#损失函数
y_pre=forward(x)
return (y_pre-y)**2
print("before training",4,forward(4).item())
for epoch in range(100):
for x,y in zip(x_data,y_data):
l=loss(x,y)#计算当前(x,y)的损失函数
print("l:",l.item())#输出对于当前参数的损失值
l.backward()#进行反向传递,得到损失函数关于参数w的梯度
print("grad:",x,y,w.grad.item())#输出梯度值
w.data=w.data-0.01*w.grad.data#更新参数w的值,注意w此时是张量
print(w.grad.data,"****",w.data,"**********************")#打印输出
w.grad.data.zero_()#将张量w的梯度信息清零,进行下次重新计算梯度值
print("progress",epoch,l.item())
print("after training",4,forward(4).item())
PyTorch 深度学习实践 第4讲
于 2023-09-19 19:43:27 首次发布