python-pytorch基础之神经网络回归
这里写目录标题
- 定义数据集
- 定义函数
- 生成数据集
- 使用Dataloader加载dataset
- 定义神经网络
- 定义
- 实例化
- 查看是否是输出的一个
- 训练
- 编写trian方法
- 训练并保存模型
- 测试模型结果
- 构造数据
- 测试
- 结论
定义数据集
import torch
import random
定义函数
# 生成数据
def get_rancledata():width=random.random()height=random.random()s=width*heightreturn width,height,sget_rancledata()
(0.1571327616035657, 0.5335562021159256, 0.08383915950918565)
生成数据集
class dataset(torch.utils.data.Dataset):def __init__(self):passdef __len__(self):return 1000def __getitem__(self,i):width,height,s=get_rancledata()x=torch.FloatTensor([width,height])# 这里注意也是需要转换成tensor的,否则训练会报类型错误y=torch.FloatTensor([s])return x,ydataset=dataset()
len(dataset),dataset[4999]
(1000, (tensor([0.2137, 0.6781]), tensor([0.1449])))
使用Dataloader加载dataset
loader=torch.utils.data.DataLoader(dataset=dataset,shuffle=True,batch_size=9
)
len(loader),next(iter(loader))
(112,[tensor([[0.7389, 0.1202],[0.5764, 0.7888],[0.7244, 0.0229],[0.5102, 0.0755],[0.8550, 0.4998],[0.9992, 0.5890],[0.1704, 0.0162],[0.2132, 0.9157],[0.7946, 0.8907]]),tensor([[0.0888],[0.4546],[0.0166],[0.0385],[0.4273],[0.5885],[0.0028],[0.1953],[0.7077]])])
定义神经网络
定义
# 输入两个,输出一个
class Model(torch.nn.Module):def __init__(self):super().__init__()self.fb=torch.nn.Sequential(torch.nn.Linear(in_features=2,out_features=32),torch.nn.ReLU(),torch.nn.Linear(in_features=32,out_features=32),torch.nn.ReLU(),torch.nn.Linear(in_features=32,out_features=1))def forward(self,x):return self.fb(x)
实例化
model=Model()
torch.rand(4,2)
tensor([[0.4510, 0.1455],[0.4963, 0.2974],[0.9480, 0.9913],[0.9053, 0.4228]])
查看是否是输出的一个
# 测试
model(torch.rand(8,2)).shape
torch.Size([8, 1])
训练
编写trian方法
def train():# 选择损失函数loss_fn=torch.nn.MSELoss()# 选择优化器optimizer=torch.optim.Adam(model.parameters(),lr=1e-4)#遍历多少轮for epoch in range(100):#全量遍历for i ,(x,y) in enumerate(loader):#计算损失#计算梯度#优化参数#优化梯度清零out=model(x)loss=loss_fn(out,y)loss.backward()optimizer.step()optimizer.zero_grad()if epoch % 20 ==0:print(epoch,loss.item())torch.save(model,"huigui.model")
训练并保存模型
train()
0 0.03260539472103119
0 0.06368591636419296
0 0.08260147273540497
0 0.04632813110947609
0 0.08333451300859451
0 0.10992465913295746
0 0.12929300963878632
0 0.061169371008872986
0 0.08229123800992966
0 0.0604255348443985
0 0.11475709825754166
0 0.13913851976394653
0 0.09228374809026718
0 0.10618235915899277
0 0.12170673906803131
0 0.05438697338104248
0 0.11730150133371353
0 0.07718850672245026
0 0.11877405643463135
0 0.0647420659661293
0 0.1062769666314125
0 0.08034960925579071
0 0.06462960690259933
0 0.029708124697208405
0 0.19415663182735443
0 0.022178875282406807
0 0.023824863135814667
0 0.06074700132012367
0 0.014404748566448689
0 0.015829702839255333
0 0.07006165385246277
0 0.0908271074295044
0 0.023783870041370392
0 0.09584006667137146
0 0.16521167755126953
0 0.09473344683647156
0 0.12153694033622742
0 0.030839459970593452
0 0.019292233511805534
40 8.071886259131134e-05
40 2.137169212801382e-05
40 0.00010651862248778343
40 7.332033419515938e-05
40 0.00010564295371295884
40 4.790672755916603e-05
40 3.7615245673805475e-05
40 3.413142985664308e-05
40 6.713613402098417e-05
40 0.0006545005016960204
测试模型结果
构造数据
# 从loader加载一批数据来测试x,y=next(iter(loader))
x,y
测试
# 方法一
# out=model(x)# 方法二 加载模型
model1=torch.load("huigui.model")
out=model1(x)# 打印在一起,便于观察,
# 这个cat函数很有用注意
torch.cat([out,y],dim=1)
结论
从上面结果看
[ 0.6257, 0.6214],[ 0.5435, 0.5454],[ 0.0227, 0.0203],[-0.0044, 0.0033],[ 0.5257, 0.5296],[ 0.4749, 0.4805],[ 0.4665, 0.4649],[ 0.4143, 0.4141],[ 0.0130, 0.0138]]
第一列是预测的,第二列是实际的,可以查看两列值相差很小,说明模型有效
相关文章:
python-pytorch基础之神经网络回归
这里写目录标题 定义数据集定义函数生成数据集 使用Dataloader加载dataset定义神经网络定义实例化查看是否是输出的一个 训练编写trian方法训练并保存模型 测试模型结果构造数据测试结论 定义数据集 import torch import random定义函数 # 生成数据 def get_rancledata():wid…...
linux中通过.desktop文件执行bash命令打开chrome浏览器并传参
.desktop 文件介绍 Ecex 参数介绍 Code 描述 %f %f指向临时文件。用于不了解URL语法的程序。 %F 文件列表。用于可以一次打开多个本地文件的应用程序。每个文件作为单独的参数传递给可执行程序。 %u 单一的URL或者本地文件 %U %u的复数 %i 如果Icon 为空,不应该填写此参数。…...
ChatGPT的应用与发展趋势:解析人工智能的新风口
目录 优势 应用领域 发展趋势 总结 在人工智能技术迅猛发展的时代,自然语言处理系统的提升一直是研究者们追求的目标。作为人工智能领域的重要突破之一,ChatGPT以其出色的语言模型和交互能力,在智能对话领域取得了重要的进展。 ChatGPT是…...
使用maven打jar包时,如何只把依赖的其它jar中的类打进jar包,没有依赖的其它jar包的类文件不打进来?
简介 使用Maven打包时,默认情况下,所有依赖的jar包都会被打包到生成的jar文件中。 如果只想将依赖的其他jar中的类文件打进来,而不包含其它jar包,可以使用Maven的 maven-shade-plugin插件进行配置。 步骤 以下是一个示例配置&…...
arm neon/fpu/mfloat
neon官网介绍: Arm Neon technology is an advanced Single Instruction Multiple Data (SIMD) architecture extension for the A-profile and R-profile processors. Neon technology is a packed SIMD architecture. Neon registers are considered as vectors of elements …...
Maven基础之项目创建、packaging
文章目录 创建 maven 项目流程骨架是浮云,packaging 是关键 创建 maven 项目流程 通过骨架(archetype)创建 maven 工程 第一步:选择 new → maven → Maven Project 第二步:New Maven Project 窗口不作任何设置&…...
c++ std::map 使用注意事项
1. std::map 如果在添加元素前,直接去取 key-value,会怎样 ? 先说答案,map 在添加元素前,直接使用会给 key 添加默认的 value! 2. 问题背景 某项目代码报出个严重的bug,具体现象是某个 map…...
Camera HAL/ISP 专业术语大全
不断更新,建议收藏,快速检索 SOC,System On Chip,片上系统 HAL,Hardware Abstraction Layer,硬件抽象层 ISP,Image Signal Processor,图像信号处理器 KMD,Kernel Mod…...
POI的简单入门
POI的简单入门 导入jar包将数据写入Excel文件读取Excel文件中的数据 导入jar包 Apache POI的maven坐标 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version> </dependency>…...
如何将笔记本作为另一台电脑的副屏显示
背景说明 台式电脑一个显示器不够我使用,而手头又没有多的显示器。我的笔记本有屏幕,但是不能直接连HDMI线给台式拓展屏幕。研究一段时间后发现,利用spacedesk软件可以基本完美解决这个问题。 效果演示 软件下载与安装 官网下载最新版(需要…...
深入理解正则表达式:为什么它在Java中如此重要?
文章目录 一、正则表达式1.1 为什么引入正则表达式1.2 什么是正则表达式 二、正则表达式规则2.1 正则表达式的基本语法规则2.2 非贪婪匹配 三、正则表达式在java中的应用3.1 String3.2 java.util.regex 参考资料 一、正则表达式 1.1 为什么引入正则表达式 在实际编写程序的过…...
jmeter实现webservice接口测试
其实可以用jmeter两种sampler进行webservice的测试: 1、SOAP/XML-RPC Request(但是在jmeter3.2以后版本中已经取消了这个取样器) 2、HTTP请求 下面分别介绍两种方式 一、首先需要使用soupUI工具抓取webservice接口的部分需要的信息。 1、新建项目 2、新建成功的…...
js 四舍五入保留一位小数 求百分比
概览:一个数据占一组数据的比率,并且四舍五入保留一位小数。通过Math.round()四舍五入。 参考链接: mdn中文文档Math.round() 实现思路: Math.round(x) 函数返回一个数字四舍五入后最接近的整数。参数x是一个数值 实现代码&a…...
文件上传漏洞总结2
文件上传的大体都已经学习过了 这个假期在给他强化一下 什么是webshell webshell是web入侵的脚本攻击工具。webshell就是一个asp或php木马后门,黑客在入侵了一个网站后,常常在将这些asp或php木马后门文件放置在网站服务器的web目录中,与正常…...
【组内工作】木马回联
文章目录 C2服务器安装和运行方法CrossC2运行方法sliver运行方法empire安装方法DeimosC2安装教程TrevorC2安装教程: C2服务器的流量特征CrossC21. 心跳包2. 命令3. ja3/ja3s Sliver1. http2. https empirehttphttps DeimosC2https TrevorC2 C2服务器安装和运行方法 …...
未来将会有更多基于 Cortana 的设备
在前些日子的 Build 大会首日 Keynote 中,微软正式确认 HP 跟 Intel 也正在开发基于 Cortana 平台的联网家居产品,这是继推出 Invoke 喇叭的 Harman Kardon 后,又有知名大牌加入到 Cortana 的阵营当中,有这样的品牌资源背景&#…...
嵌入式硬件系统的基本组成
嵌入式硬件系统的基本组成 嵌入式系统的硬件是以包含嵌入式微处理器的SOC为核心,主要由SOC、总线、存储器、输入/输出接口和设备组成。 嵌入式微处理器 每个嵌入式系统至少包含一个嵌入式微处理器 嵌入式微处理器体系结构可采用冯.诺依曼(Von Neumann&…...
def __init__(self, **kwargs):中的**kwargs是什么意思
**kwargs是什么意思 在Python中,**kwargs是一种特殊的参数形式,用于接收可变数量的关键字参数(Keyword Arguments)。kwargs是一个字典(dictionary),其中关键字是参数名,对应的值是传…...
web攻击面试|网络渗透面试(三)
Web攻击大纲 常见Web攻击类型: SQL注入攻击:介绍SQL注入攻击的概念、原理和常见的攻击方式,如基于错误消息的注入、基于布尔盲注的注入等。解释攻击者如何利用SQL注入漏洞获取敏感信息或者对数据库进行恶意操作,并提供防御措施&a…...
数据分析方法
常用的数据分析方法有:1、对比分析法;2、分组分析法;3、结构分析法;4、留存分析法;5、交叉分析法;6、漏斗分析法;7、矩阵分析法;8、象限分析法;9、趋势分析法;…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...
ubuntu22.04有线网络无法连接,图标也没了
今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...
