完全使用PyTorch框架的工具来构建模型,输入数据等。
完成最简单的 y = w ∗ x + b y=w*x+b y=w∗x+b模型的构建过程
数据集不再使用列表数据,使用Tensor对象来保存,一次输入一个 3 ∗ 1 3*1 3∗1的数据矩阵。
x | y |
---|---|
1.0 | 2.0 |
2.0 | 4,0 |
3.0 | 6.0 |
4.0 | ? |
将数据集批量送入模型中,实现代码如下:
# Author:gt
# CreatTime:2021/10/31
# FileName:lesson4.py
#用PyTorch来构建线性模型y=w*x+b(实际b=0)
import torch
x_train=torch.Tensor([[1.0],[2.0],[3.0]]) #3*1的矩阵 批量梯度下降
y_train=torch.Tensor([[2.0],[4.0],[6.0]]) #3*1的矩阵
#用类来构建模型
class LinearModel(torch.nn.Module):
def __init__(self):
super(LinearModel,self).__init__()
self.linear=torch.nn.Linear(1,1)
def forward(self,x):
y_pre=self.linear(x)
return y_pre
model=LinearModel()#模型实例化
criterion=torch.nn.MSELoss(size_average=False) #接收的参数相当于y^和y
optimizer=torch.optim.SGD(model.parameters(),lr=0.01)
#训练模型
for epoch in range(1000):
y_pre=model(x_train)
loss=criterion(y_pre,y_train)
print(epoch,loss.item())
optimizer.zero_grad()
loss.backward()
optimizer.step()
#输出最后训练模型的权重和偏置值
print('w=',model.linear.weight.item())
print('b=',model.linear.bias.item())
#测试模型
x_test=torch.Tensor([[4.0]])
y_test=model(x_test)
print('y_pre=',y_test.data)
训练得到模型参数w约等于2,b约等于0,训练结果为8,较好的得到了预期的值
完结,撒花