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

Pytorch构建神经网络多元线性回归模型

1.模型线性方程y = W ∗ X + b 

from torch import nn
import torch#手动设置的W参数(待模型学习),这里设置为12个,自己随意设置weight_set=torch.tensor([[1.5,2.38,4.22,6.5,7.2,3.21,4.44,6.55,2.48,-1.75,-3.26,4.78]])#手动设置的偏置b
bias=torch.tensor([7.25])#生成100个随机的12个特征的点
torch.random.manual_seed(100)
x=torch.randint(1,10,(100,12))
x=x.float()
#将参数转置
weight_set_trans=weight_set.transpose(0,1)
#y=w*x+b
y_true=torch.matmul(x,weight_set_trans)+bias

2.定义单层的网络结构

#定义模型class linear_model(nn.Module):def __init__(self):super().__init__()self.layer = nn.Linear(12,1)def forward (self, x):y = self.layer(x)return y
model=linear_model()
h=model(x)
for name ,param in model.named_parameters():print(f"{name}:{param}")output:layer.weight:Parameter containing:
tensor([[ 0.2429,  0.0523, -0.2873,  0.2485,  0.1396, -0.0960,  0.2534,  0.2423,0.0123, -0.2309, -0.2212,  0.0499]], requires_grad=True)
layer.bias:Parameter containing:
tensor([0.0503], requires_grad=True)

可以看到模型初始化的参数与设置的参数相差很大

3.模型训练

#定义优化器
optimizer=torch.optim.Adam(model.parameters(),lr=0.1)
#定义损失函数
criterion=nn.MSELoss()
#设置训练轮数
for epoch in range(5000):h=model(x)loss=criterion(h,y_true)#使用backward计算梯度loss.backward()#参数更新optimizer.step()optimizer.zero_grad() #梯度清零if epoch %100==0:print(f'after{epoch+1} iterations,train_loss:{loss.item():.3f}')
output:
after1 iterations,train_loss:36681.406
after101 iterations,train_loss:488.356
after201 iterations,train_loss:297.450
after301 iterations,train_loss:158.137
after401 iterations,train_loss:75.587
after501 iterations,train_loss:33.060
after601 iterations,train_loss:13.407
after701 iterations,train_loss:5.149
after801 iterations,train_loss:1.968
after901 iterations,train_loss:0.831
after1001 iterations,train_loss:0.445
after1101 iterations,train_loss:0.315
after1201 iterations,train_loss:0.268
after1301 iterations,train_loss:0.248
after1401 iterations,train_loss:0.236
after1501 iterations,train_loss:0.226
after1601 iterations,train_loss:0.218
after1701 iterations,train_loss:0.209
after1801 iterations,train_loss:0.200
after1901 iterations,train_loss:0.191print(model.state_dict())output:OrderedDict({'layer.weight': tensor([[ 1.5698,  2.4342,  4.2689,  6.5287,  7.2732,  3.2440,  4.4685,  6.6003,2.5380, -1.7194, -3.2042,  4.8492]]), 'layer.bias': tensor([4.2708])})#保存模型文件参数
torch.save(model.state_dict(),'lr.pth')#模型预测model_predict=linear_model()
#加载模型参数
model_predict.load_state_dict(torch.load('lr.pth'))predict=model.predict(x)

 可以看到经过1000次迭代之后,损失就很小了。最终模型训练的参数与开始设置的参数也比较接近。

http://www.lryc.cn/news/442555.html

相关文章:

  • 如何基于Flink CDC与OceanBase构建实时数仓,实现简化链路,高效排查
  • ActiveMQ、RabbitMQ 和 Kafka 在 Spring Boot 中的实战
  • 火语言RPA流程组件介绍--获取关联元素
  • 【2024研赛】【华为杯E题】2024 年研究生数学建模比赛思路、代码、论文助攻
  • Linux——K8s集群部署过程
  • 二.Unity中使用虚拟摇杆来控制角色移动
  • 基于SpringBoot的旅游管理系统
  • Linux套接字
  • 软件测试面试题(5)——二面(游戏测试)
  • C#基于SkiaSharp实现印章管理(8)
  • 信通院发布首个《大模型媒体生产与处理》标准,阿里云智能媒体服务作为业界首家“卓越级”通过
  • AI学习指南深度学习篇-Adam的Python实践
  • 08_React redux
  • 2024华为杯研究生数学建模竞赛(研赛)选题建议+初步分析
  • 001.从0开始实现线性回归(pytorch)
  • Relations Prediction for Knowledge Graph Completion using Large Language Models
  • 2024年中国研究生数学建模竞赛D题思路代码分析——大数据驱动的地理综合问题
  • 全国31省对外开放程度、经济发展水平、政府干预程度指标数据(2000-2022年)
  • 计算机网络传输层---课后综合题
  • 【homebrew安装】踩坑爬坑教程
  • 反游戏学(Reludology):概念、历史、现状与展望?(豆包AI版)
  • 【C/C++语言系列】实现单例模式
  • A. Make All Equal
  • 业务安全治理
  • HelpLook VS GitBook,在线文档管理工具对比
  • docker面经
  • Python 中的 Kombu 类库
  • safepoint是什么?有什么用?
  • axios相关知识点
  • LeetCode 面试经典150题 67.二进制求和