使用PyTorch提供的工具来计算反向传播过程。
模型y=w*x
数据集:
x | y |
---|---|
1.0 | 2.0 |
2.0 | 4.0 |
3.0 | 6.0 |
4.0 | ? |
实现代码:
# Author:gt
# CreatTime:2021/10/29
# FileName:lesson3.py
#利用PyTorch框架实现y=w*x 这个最简单的线性模型
import torch
#准备数据集
x_train=[1.0,2.0,3.0]
y_train=[2.0,4.0,6.0]
#用Tensor来为w赋初值
w=torch.Tensor([1.0])
w.requires_grad=True #需要计算关于w的梯度
def forward(x):
return x*w
#构建计算图
def loss(x,y):
y_pre=forward(x)
return (y_pre-y)**2
print("predict(before training)",4,forward(4).item())
for epoch in range(100):
for x,y in zip(x_train,y_train):
l=loss(x,y) #调用它是为了构建计算图
l.backward() #计算完就释放
print('\tgrad:',x,y,w.grad.item()) #dloss/dw的值
w.data=w.data-0.01*w.grad.data
w.grad.data.zero_()
print("progress:",epoch,l.item())
print("predict(after training)",4,forward(4).item())
运行结果:
完结撒花