当前位置: 首页 > article >正文

pytorch构建线性回归模型

仅仅用于自己记录pytorch学习记录

线性回归模型
(1)准备数据集
数据:三个数据x=[x1,x2,x3] y=[y1,y2,y3]
在这里插入图片描述

import torch
#线性回归,我们使用三组数据,分别是(1,2),(2,4),(3,6)
x_data = torch.tensor([[1.0],[2.0],[3.0]])
y_data = torch.tensor([[2.0],[4.0],[6.0]])

(2)设计模块
所有模块都是继承与nn.moudle类别
在这里插入图片描述
在这里插入图片描述
关于nn.Linear()用法,可以参考这个篇文章,因为我们输入神经元的个数为1(即一个点的x轴坐标),输出神经元个数也是1(wx+b的值)
用法参考
我们自己定义有个线性回归类,这个类继承于torch.nn.module这个类类别必须要重载init函数和forward函数,一个负责类的初始化(相当于构造),一个负责前向传播super().init()必须要有的。

class LinearModel(torch.nn.Module):
    def __init__(self):
        #调用父类的构造__init__()
        super(LinearModel,self).__init__()
        #构造对象,linear是Linear()的实例化对象,帮我们完成wx+b的计算
        #输入神经元1个,输出神经元也是1个,输入一个点的x轴坐标,输出一个wx+b的预测值y
        self.linear =torch.nn.Linear(1,1)
    def forward(self,x):
        #一个初始化类带参数,表明其是callbale的,即__callable__()
        y_pred=self.linear(x)
        return y_pred    

在这里插入图片描述

(3)建立损失和优化器
在这里插入图片描述

#实例化自己的模型
model =LinearModel()
#构建定义损失函数
criterion =torch.nn.MSELoss(size_average =False)
#构建定义优化器,使用SGD下降
optimizer = torch.optim.SGD(model.parameters(),lr=0.01)

(4)开始训练

在这里插入图片描述
其中step函数是用来更新

#构建定义优化器,使用SGD下降
optimizer = torch.optim.SGD(model.parameters(),lr=0.01)
for epoch in range(100):
    #先算预测值
    y_pred=model(x_data)
    #计算损失
    loss=criterion(y_pred,x_data) 
    print(epoch,loss.item())
    #梯度回0,pytorch里面必须要有的步骤
    optimizer.zero_grad()
    #权重传播
    loss.backward()
    #更新
    optimizer.step()

(5)打印结果展示
在这里插入图片描述

#linear里面的权重w和偏置b打印出来,必须要有这个函数
print("w= ",model.linear.weight.item())
print("w= ",model.linear.bias.item())

(6)测试模型
在这里插入图片描述

#数据测试
x_test=torch.tensor([4.0])
y_test=model(x_test)
#取出训练好的预测值
print(y_test.data)

大家也可以试一试其他的优化器
在这里插入图片描述

全部代码

import torch
x_data = torch.tensor([[1.0],[2.0],[3.0]])
y_data = torch.tensor([[2.0],[4.0],[6.0]])
class LinearModel(torch.nn.Module):
    def __init__(self):
        #调用父类的构造__init__()
        super(LinearModel,self).__init__()
        #构造对象,linear是Linear()的实例化对象,帮我们完成wx+b的计算
        #输入神经元1个,输出神经元也是1个,输入一个点的x轴坐标,输出一个wx+b的预测值y
        self.linear =torch.nn.Linear(1,1)
    def forward(self,x):
        #一个初始化类带参数,表明其是callbale的,即__callable__()
        y_pred=self.linear(x)
        return y_pred
#实例化自己的模型
model =LinearModel()
#构建定义损失函数
criterion =torch.nn.MSELoss(size_average =False)
#构建定义优化器,使用SGD下降
optimizer = torch.optim.SGD(model.parameters(),lr=0.01)
for epoch in range(100):
    #先算预测值
    y_pred=model(x_data)
    #计算损失
    loss=criterion(y_pred,x_data) 
    print(epoch,loss.item())
    #梯度回0,pytorch里面必须要有的步骤
    optimizer.zero_grad()
    #权重传播
    loss.backward()
    #更新
    optimizer.step()
#linear里面的权重w和偏置b打印出来,必须要有这个函数
print("w= ",model.linear.weight.item())
print("w= ",model.linear.bias.item())

#数据测试
x_test=torch.tensor([4.0])
y_test=model(x_test)
#取出训练好的预测值
print(y_test.data)

在这里插入图片描述


http://www.kler.cn/a/600114.html

相关文章:

  • 【LInux 维测专栏 1 -- printk extension 介绍】
  • 11-scala多参数列表(柯里化)
  • 小白闯AI:Llama模型Lora中文微调实战
  • Java 代理模式深度解析:从静态到动态的实现与原理
  • 【jvm】垃圾回收的并行和并发
  • 鸿蒙harmonyOS:笔记 正则表达式
  • JVM常用概念之编译器黑洞
  • 数学建模:MATLAB卷积神经网络
  • Langchain 自定义工具和内置工具
  • FRP结合Nginx实现HTTPS服务穿透
  • LVGL移植详细教程(基于STM32F407+rt-thread+FSMC接口屏+V9版本)
  • java 设置操作系统编码、jvm平台编码和日志文件编码都为UTF-8的操作方式
  • 现代化前端异常治理与容灾体系深度解析
  • 本周安全速报(2025.3.18~3.24)
  • VSCODE上ckg_server_linux进程占用CPU过多
  • C++红黑树的深入解析:从理论到实践
  • Mysql--日志(错误日志、二进制日志、查询日志、慢查询日志)
  • Wireshark网络抓包分析使用详解
  • SAP SD学习笔记34 - 预詑品(寄售物料)之 预詑品返品(KR),预詑品引取(KA)
  • 青少年编程与数学 02-011 MySQL数据库应用 16课题、安全机制