5、使用PyTorch 实现线性回归

网友投稿 660 2022-11-02

5、使用PyTorch 实现线性回归

5、使用PyTorch 实现线性回归

视频:​​《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibili​​

使用PyTorch 实现线性回归(4步):

1、构建数据

2、设计模型(使用类)

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

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

1、准备数据

#1.准备数据,注意都是矩阵形式x_data = torch.Tensor([[1.0], [2.0], [3.0]])y_data = torch.Tensor([[2.0], [4.0], [6.0]])

2、设计模型

(使用torcn.nn下的Linear模型)

2.设计模型(类) 继承nn.Module 以便使用其方法class LinearModel(torch.nn.Module): #初始化 def __init__(self): super(LinearModel,self).__init__() self.linear = torch.nn.Linear(1,1) #Linear是一个线性单元 #前馈方法 def forward(self, x): y_pred = self.linear(x) #实际上调用对象linear的__call__()方法,linear的__call__()方法执行forward前馈 return y_predmodel = LinearModel()

3、损失和优化器

#3 loss 和 optimizer(优化器)criterion = torch.nn.MSELoss(size_average=False) #不需要求均值# 优化器。 model.parameters()获取模型中需要优化的参数,lr(learning rate,学习率)optimizer = torch.optim.SGD(model.parameters(),lr=0.01)

4、训练

#4 训练过程for epoch in range(100): #前馈 y_pred = model(x_data) #计算损失 loss = criterion(y_pred,y_data) print("epoch={},loss={}".format(epoch,loss)) optimizer.zero_grad()#归零 #反向传播 loss.backward() #更新、优化参数 optimizer.step()

完整代码:

import torch#1.准备数据,注意都是矩阵形式x_data = torch.Tensor([[1.0], [2.0], [3.0]])y_data = torch.Tensor([[2.0], [4.0], [6.0]])#2.设计模型(类) 继承nn.Module 以便使用其方法class LinearModel(torch.nn.Module): #初始化 def __init__(self): super(LinearModel,self).__init__() self.linear = torch.nn.Linear(1,1) #Linear是一个线性单元 #前馈方法 def forward(self, x): y_pred = self.linear(x) #实际上调用对象linear的__call__()方法,linear的__call__()方法执行forward前馈 return y_predmodel = LinearModel()#3 loss 和 optimizer(优化器)criterion = torch.nn.MSELoss(size_average=False) #不需要求均值# 优化器。 model.parameters()获取模型中需要优化的参数,lr(learning rate,学习率)optimizer = torch.optim.SGD(model.parameters(),lr=0.01)#4 训练过程for epoch in range(100): #前馈 y_pred = model(x_data) #计算损失 loss = criterion(y_pred,y_data) print("epoch={},loss={}".format(epoch,loss)) optimizer.zero_grad()#归零 #反向传播 loss.backward() #更新、优化参数 optimizer.step()#Test, 查看模型参数及测试训练效果print('w={}'.format(model.linear.weight.item()))print('b={}'.format(model.linear.bias.item()))x_test = torch.Tensor([[4.0]])y_test = model(x_test)print('y_pred = {} for x = {}'.format(y_test.data,x_test.data))

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:世界上最小的Android APK
下一篇:分类,好用的小工具
相关文章

 发表评论

暂时没有评论,来抢沙发吧~