5、使用PyTorch 实现线性回归

简介: 5、使用PyTorch 实现线性回归

使用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_pred
 
model = 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_pred
 
model = 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))
 
 
 
 
 
 
 
 
 
 
 
相关文章
|
机器学习/深度学习 并行计算 PyTorch
Python和PyTorch深入实现线性回归模型:一篇文章全面掌握基础机器学习技术
Python和PyTorch深入实现线性回归模型:一篇文章全面掌握基础机器学习技术
209 0
|
5月前
|
机器学习/深度学习 算法 PyTorch
Pytorch实现线性回归模型
在机器学习和深度学习领域,线性回归是一种基本且广泛应用的算法,它简单易懂但功能强大,常作为更复杂模型的基础。使用PyTorch实现线性回归,不仅帮助初学者理解模型概念,还为探索高级模型奠定了基础。代码示例中,`creat_data()` 函数生成线性回归数据,包括噪声,`linear_regression()` 定义了线性模型,`square_loss()` 计算损失,而 `sgd()` 实现了梯度下降优化。
|
4月前
|
机器学习/深度学习 PyTorch 算法框架/工具
C++多态崩溃问题之在PyTorch中,如何定义一个简单的线性回归模型
C++多态崩溃问题之在PyTorch中,如何定义一个简单的线性回归模型
|
6月前
|
机器学习/深度学习 PyTorch 算法框架/工具
pytorch中的非线性回归
pytorch中的非线性回归
96 2
pytorch中的非线性回归
|
6月前
|
机器学习/深度学习 PyTorch 算法框架/工具
pytorch中的线性回归
pytorch中的线性回归
42 1
|
6月前
|
机器学习/深度学习 自然语言处理 算法
PyTorch实例:简单线性回归的训练和反向传播解析
PyTorch实例:简单线性回归的训练和反向传播解析
PyTorch实例:简单线性回归的训练和反向传播解析
|
机器学习/深度学习 算法 PyTorch
Linear Regression with PyTorch 用PyTorch实现线性回归
Linear Regression with PyTorch 用PyTorch实现线性回归
116 0
|
机器学习/深度学习 数据挖掘 PyTorch
PyTorch深度学习实战 | 预测工资——线性回归
通过员工工作年限与工资的对应关系表,找出二者之间的关系,并预测在指定的年限时,工资会有多少。
960 0
PyTorch深度学习实战 | 预测工资——线性回归

相关实验场景

更多