PyTorch深度学习实践(五)---pytorch实现线性回归

pytorch写神经网络

(1)准备数据集

(2)涉及模型(yheight)

(3)构造损失函数和优化器

(4)训练周期(前馈、反馈、更新)

 1 import torch
 2 
 3 #1.准备数据
 4 x_data=torch.tensor([[1.0],[2.0],[3.0]])
 5 y_data=torch.tensor([[2.0],[4.0],[6.0]])
 6 #2.构造模型
 7 class LinearModel(torch.nn.Module):
 8     def __init__(self):#构造函数
 9         super(LinearModel,self).__init__()
10         self.linear=torch.nn.Linear(1,1)#构造对象;(1,1)指输入x和输出y的特征维度;第三个参数自动为true,是否要有b
11 
12     def forward(self,x):
13         y_pred=self.linear(x)#计算y=ax+b
14         return y_pred
15 
16 model=LinearModel()#实例化
17 
18 criterion=torch.nn.MSELoss(size_average=False)#计算loss
19 optimizer=torch.optim.SGD(model.parameters(),lr=0.01)#查看需要更新的权重; lr:学习率
20 
21 for epoch in range(100):
22     y_pred=model(x_data)#前向传播
23     loss=criterion(y_pred,y_data)#计算loss
24     print(epoch,loss.item())
25 
26     optimizer.zero_grad()#先将梯度归零
27     loss.backward()#反向传播,计算梯度
28     optimizer.step()#更新w,b的值
29 
30 print('w=',model.linear.weight.item())
31 print("b=",model.linear.bias.item())
32 
33 x_test=torch.tensor([4.0])
34 y_test=model(x_test)
35 print("y_pred=",y_test)

 

posted @ 2021-04-17 13:35  mioho  阅读(143)  评论(0编辑  收藏  举报