简单线性回归模型(复习一下前向传播和反向传播)

案例1

import torch
torch.__version__
x=torch.rand(3,4,requires_grad=True)
x
tensor([[0.9795, 0.8240, 0.6395, 0.1617],[0.4833, 0.4409, 0.3758, 0.7234],[0.9857, 0.9663, 0.5842, 0.8751]], requires_grad=True)
b=torch.rand(3,4,requires_grad=True)
t=x+b
y=t.sum()
y.backward()
b.grad
tensor([[1., 1., 1., 1.],[1., 1., 1., 1.],[1., 1., 1., 1.]])

案例2

x=torch.rand(1)
b=torch.rand(1,requires_grad=True)
w=torch.rand(1,requires_grad=True)
y=w*x
z=y+b
z.backward(retain_graph=True)#保留计算图
w.grad
tensor([0.5871])
b.grad
tensor([3.])

第一个线性回归模型

import numpy as np
x_values=[i for i in range(11)]
x_train= np.array(x_values, dtype=np.float32)
x_train=x_train.reshape(-1,1)
x_train.shape
(11, 1)
y_values=[2*i+1 for i in x_values]
y_train=np.array(y_values,dtype=np.float32)
y_train=y_train.reshape(-1,1)
y_train.shape
(11, 1)

建立模型

import torch.nn as nn
class linearRegressionModel(nn.Module):#定义了一个名为linearRegressionModel的类,该类继承自nn.Module类。def __init__(self,input_dim,output_dim):#是linearRegressionModel类的构造函数,它接受input_dim和output_dim两个参数。super(linearRegressionModel,self).__init__()self.linear=nn.Linear(input_dim,output_dim)#创建了一个全联接层对象linear,它接受输入维度input_dim和输出维度output_sum。def forward(self,x):out=self.linear(x)return out
input_dim=1
output_dim=1
model=linearRegressionModel(input_dim,output_dim)

指定好参数和损失函数

epochs=1000
learning_rate=0.01
optimizer=torch.optim.SGD(model.parameters(),lr=learning_rate)#创建随机梯度下降优化器对象
criterion=nn.MSELoss()#均方误差

训练模型

for epoch in range(epochs):epoch+=1inputs=torch.from_numpy(x_train)# numpy转tensorlabels=torch.from_numpy(y_train)optimizer.zero_grad()#梯度清零,避免累加#前向传播outputs=model(inputs)#计算损失loss=criterion(outputs,labels)#反向传播loss.backward()#更新权重参数optimizer.step()if(epoch%50==0):print('epoch {}, loss {}'.format(epoch,loss.item()))
epoch 50, loss 0.04499879851937294
epoch 100, loss 0.025665638968348503
epoch 150, loss 0.014638797380030155
epoch 200, loss 0.008349399082362652
epoch 250, loss 0.004762190859764814
epoch 300, loss 0.0027161596808582544
epoch 350, loss 0.0015491894446313381
epoch 400, loss 0.0008836076012812555
epoch 450, loss 0.0005039655370637774
epoch 500, loss 0.000287443253910169
epoch 550, loss 0.000163945704116486
epoch 600, loss 9.350906475447118e-05
epoch 650, loss 5.333393710316159e-05
epoch 700, loss 3.0422697818721645e-05
epoch 750, loss 1.7352540453430265e-05
epoch 800, loss 9.89796535577625e-06
epoch 850, loss 5.644690645567607e-06
epoch 900, loss 3.2191221635002876e-06
epoch 950, loss 1.8363726894676802e-06
epoch 1000, loss 1.047302703227615e-06

!title

用模型预测结果

predicted=model(torch.from_numpy(x_train).requires_grad_()).data.numpy()
predicted
array([[ 0.99809617],[ 2.9983704 ],[ 4.9986444 ],[ 6.9989185 ],[ 8.999193  ],[10.999468  ],[12.999742  ],[15.000015  ],[17.00029   ],[19.000565  ],[21.00084   ]], dtype=float32)

模型的保存和读取(训练好的权重)

#权重的保存
torch.save(model.state_dict(),'model.pk1')
#模型导入(读取权重数据)
model.load_state_dict(torch.load('model.pk1'))
<All keys matched successfully>


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/121183.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【电路笔记】-电路中的复数与相量(Phasor)

电路中的复数与相量(Phasor) 文章目录 电路中的复数与相量(Phasor)1、概述2、复数定义3、复数计算规则4、电子领域的复数5、总结 复数是一种重要的数学工具&#xff0c;广泛应用于包括电子学在内的许多物理领域。 这个概念可能看起来很奇怪&#xff0c;但它们的操作很简单&…

【Docker从入门到入土 6】Consul详解+Docker https安全认证(附证书申请方式)

Part 6 一、服务注册与发现的概念1.1 cmp问题1.2 服务注册与发现 二、Consul ----- 服务自动发现和注册2.1 简介2.2 为什么要用consul&#xff1f;2.3 consul的架构2.3 Consul-template 三、consul架构部署3.1 Consul服务器Step1 建立 Consul 服务Step2 查看集群信息Step3 通过…

axios封装以及详细用法

文章目录 axios用法(这里没有封装&#xff0c;下面有封装好的get&#xff0c;post方法&#xff0c;在axios封装里面)get &#xff0c;delete方法post&#xff0c;put方法 axios具体封装axios 具体参数配置 axios用法(这里没有封装&#xff0c;下面有封装好的get&#xff0c;pos…

项目中拖拽元素,可以使用html的draggable属性,当然也可以用第三方插件interact

项目中拖拽元素&#xff0c;可以使用html的draggable属性&#xff0c;当然也可以用第三方插件interact 一、安装二、引用三、使用 一、安装 npm install interactjs二、引用 import interact from interactjs三、使用 <div class"drag_box"> &…

基于android的 rk3399 同时支持多个USB摄像头

基于android的 rk3399 同时支持多个USB摄像头 一、前文二、CameraHal_Module.h三、CameraHal_Module.cpp四、编译&烧录Image五、App验证 一、前文 Android系统默认支持2个摄像头&#xff0c;一个前置摄像头&#xff0c;一个后置摄像头 需要支持数量更多的摄像头&#xff0…

selenium工作原理和反爬分析

一、 Selenium Selenium是最广泛使用的开源Web UI(用户界面)自动化测试套件之一&#xff0c;支持并行测试执行。Selenium通过使用特定于每种语言的驱动程序支持各种编程语言。Selenium支持的语言包括C#&#xff0c;Java&#xff0c;Perl&#xff0c;PHP&#xff0c;Python和Ru…

如何查看多开的逍遥模拟器的adb连接端口号

逍遥模拟器默认端口号为&#xff1a;21503。 不过&#xff0c;使用多开器多开的时候&#xff0c;端口就不一定是21503了。 如何查看&#xff1f; 进入G:\xiaoyao\Microvirt\MEmu\MemuHyperv VMs路径中 每多开一个模拟器&#xff0c;就会多出一个文件夹。 进入你要查找端口号…

2023年MathorCup高校数学建模挑战赛大数据挑战赛赛题浅析

比赛时长为期7天的妈杯大数据挑战赛如期开赛&#xff0c;为了帮助大家更好的选题&#xff0c;首先给大家带来赛题浅析&#xff0c;为了方便大家更好的选题。 赛道 A&#xff1a;基于计算机视觉的坑洼道路检测和识别 A题&#xff0c;图像处理类题目。这种题目的难度数模独一档…

SpringAOP源码解析之advice执行顺序(三)

上一章我们分析了Aspect中advice的排序为Around.class, Before.class, After.class, AfterReturning.class, AfterThrowing.class&#xff0c;然后advice真正的执行顺序是什么&#xff1f;多个Aspect之间的执行顺序又是什么&#xff1f;就是我们本章探讨的问题。 准备工作 既…

基于Python Django 的微博舆论、微博情感分析可视化系统(V2.0)

文章目录 1 简介2 意义3 技术栈Django 4 效果图微博首页情感分析关键词分析热门评论舆情预测 5 推荐阅读 1 简介 基于Python的微博舆论分析&#xff0c;微博情感分析可视化系统&#xff0c;项目后端分爬虫模块、数据分析模块、数据存储模块、业务逻辑模块组成。 Python基于微博…

第八节——Vue渲染列表+key作用

一、列表渲染 vue中使用v-for指令进行列表 <template><div><!-- item 代表 当前循环的每一项 --><!-- index 代表 当前循环的下标--><!-- 注意&#xff1a;必须要加key--><div v-for"(item, index) in arr" :key"index"…

UE5 Blueprint发送http请求

一、下载插件HttpBlueprint、Json Blueprint Utilities两个插件是互相依赖的&#xff0c;启用&#xff0c;重启项目 目前两个是Beta的状态&#xff0c;如果你使用的平台支持就可以使用&#xff0c;我们的项目因为需要取Header的值&#xff0c;所有没法使用这两个插件&#xff0…

Java集合面试题知识点总结(上篇)

大家好&#xff0c;我是栗筝i&#xff0c;从 2022 年 10 月份开始&#xff0c;我持续梳理出了全面的 Java 技术栈内容&#xff0c;一方面是对自己学习内容进行整合梳理&#xff0c;另一方面是希望对大家有所帮助&#xff0c;使我们一同进步。得到了很多读者的正面反馈。 而在 2…

DBeaver安装与使用教程(超详细安装与使用教程),好用免费的数据库管理工具

DBeaver安装步骤 资源下载&#xff1a; https://download.csdn.net/download/qq_37181642/88479235 官网地址&#xff1a; https://dbeaver.io/ 安装dbeaver 点击上图.exe安装工具&#xff0c;安装完成后不要打开 。 windows配置hosts 在hosts文件中加入&#xff1a; 127.0.0…

基于SSM民宿预订及个性化服务系统-计算机毕设 附源码 04846

SSM民宿预订及个性化服务系统 摘 要 伴随着国内旅游经济的迅猛发展民宿住宿行在国内也迎来了前所未有的发展机遇。传统的旅游模式已难以满足游客日益多元化的需求&#xff0c;随着人们外出度假的时间越来越长&#xff0c;导致人们在住宿的选择上更加追求舒适、个性化的住宿体验…

Kafka - 3.x 副本不完全指北

文章目录 kafka 副本的基本信息Leader选举过程Kafka Controllerkafka 分区副本Leader的选举流程实际演示① 查看first的详细信息&#xff0c;注意观察副本分布情况② 停掉hadoop103上的kafka进程③ 再次查看first的相信信息&#xff0c;观察副本分布④ 处理分区leader分布不均匀…

Spring Cloud之微服务

目录 微服务 微服务架构 微服务架构与单体架构 特点 框架 总结 SpringCloud 常用组件 与SpringBoot关系 版本 微服务 微服务&#xff1a;从字面上理解即&#xff1a;微小的服务&#xff1b; 微小&#xff1a;微服务体积小&#xff0c;复杂度低&#xff0c;一个微服…

【算法题】从数量最多的堆取走礼物

题目&#xff1a; 给你一个整数数组 gifts &#xff0c;表示各堆礼物的数量。每一秒&#xff0c;你需要执行以下操作&#xff1a; 选择礼物数量最多的那一堆。 如果不止一堆都符合礼物数量最多&#xff0c;从中选择任一堆即可。 选中的那一堆留下平方根数量的礼物&#xff08…

网络协议--TCP:传输控制协议

17.1 引言 本章将介绍TCP为应用层提供的服务&#xff0c;以及TCP首部中的各个字段。随后的几章我们在了解TCP的工作过程中将对这些字段作详细介绍。 对TCP的介绍将由本章开始&#xff0c;并一直包括随后的7章。第18章描述如何建立和终止一个TCP连接&#xff0c;第19和第20章将…

【Qt之QMap】介绍及示例

描述 QMap类是一个模板类&#xff0c;提供基于红黑树的字典功能。 QMap<Key, T>是Qt中的通用容器类之一。它存储(key, value)键值对&#xff0c;并提供快速查找与特定键相关联的值。 QMap和QHash提供非常相似的功能。它们的区别在于&#xff1a; QHash的查找速度平均比Q…