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

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>…...

如何将笔记本作为另一台电脑的副屏显示

背景说明 台式电脑一个显示器不够我使用&#xff0c;而手头又没有多的显示器。我的笔记本有屏幕&#xff0c;但是不能直接连HDMI线给台式拓展屏幕。研究一段时间后发现&#xff0c;利用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的测试&#xff1a; 1、SOAP/XML-RPC Request(但是在jmeter3.2以后版本中已经取消了这个取样器) 2、HTTP请求 下面分别介绍两种方式 一、首先需要使用soupUI工具抓取webservice接口的部分需要的信息。 1、新建项目 2、新建成功的…...

js 四舍五入保留一位小数 求百分比

概览&#xff1a;一个数据占一组数据的比率&#xff0c;并且四舍五入保留一位小数。通过Math.round()四舍五入。 参考链接&#xff1a; mdn中文文档Math.round() 实现思路&#xff1a; Math.round(x) 函数返回一个数字四舍五入后最接近的整数。参数x是一个数值 实现代码&a…...

文件上传漏洞总结2

文件上传的大体都已经学习过了 这个假期在给他强化一下 什么是webshell webshell是web入侵的脚本攻击工具。webshell就是一个asp或php木马后门&#xff0c;黑客在入侵了一个网站后&#xff0c;常常在将这些asp或php木马后门文件放置在网站服务器的web目录中&#xff0c;与正常…...

【组内工作】木马回联

文章目录 C2服务器安装和运行方法CrossC2运行方法sliver运行方法empire安装方法DeimosC2安装教程TrevorC2安装教程&#xff1a; C2服务器的流量特征CrossC21. 心跳包2. 命令3. ja3/ja3s Sliver1. http2. https empirehttphttps DeimosC2https TrevorC2 C2服务器安装和运行方法 …...

未来将会有更多基于 Cortana 的设备

在前些日子的 Build 大会首日 Keynote 中&#xff0c;微软正式确认 HP 跟 Intel 也正在开发基于 Cortana 平台的联网家居产品&#xff0c;这是继推出 Invoke 喇叭的 Harman Kardon 后&#xff0c;又有知名大牌加入到 Cortana 的阵营当中&#xff0c;有这样的品牌资源背景&#…...

嵌入式硬件系统的基本组成

嵌入式硬件系统的基本组成 嵌入式系统的硬件是以包含嵌入式微处理器的SOC为核心&#xff0c;主要由SOC、总线、存储器、输入/输出接口和设备组成。 嵌入式微处理器 每个嵌入式系统至少包含一个嵌入式微处理器 嵌入式微处理器体系结构可采用冯.诺依曼&#xff08;Von Neumann&…...

def __init__(self, **kwargs):中的**kwargs是什么意思

**kwargs是什么意思 在Python中&#xff0c;**kwargs是一种特殊的参数形式&#xff0c;用于接收可变数量的关键字参数&#xff08;Keyword Arguments&#xff09;。kwargs是一个字典&#xff08;dictionary&#xff09;&#xff0c;其中关键字是参数名&#xff0c;对应的值是传…...

web攻击面试|网络渗透面试(三)

Web攻击大纲 常见Web攻击类型&#xff1a; SQL注入攻击&#xff1a;介绍SQL注入攻击的概念、原理和常见的攻击方式&#xff0c;如基于错误消息的注入、基于布尔盲注的注入等。解释攻击者如何利用SQL注入漏洞获取敏感信息或者对数据库进行恶意操作&#xff0c;并提供防御措施&a…...

数据分析方法

常用的数据分析方法有&#xff1a;1、对比分析法&#xff1b;2、分组分析法&#xff1b;3、结构分析法&#xff1b;4、留存分析法&#xff1b;5、交叉分析法&#xff1b;6、漏斗分析法&#xff1b;7、矩阵分析法&#xff1b;8、象限分析法&#xff1b;9、趋势分析法&#xff1b…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

离线语音识别方案分析

随着人工智能技术的不断发展&#xff0c;语音识别技术也得到了广泛的应用&#xff0c;从智能家居到车载系统&#xff0c;语音识别正在改变我们与设备的交互方式。尤其是离线语音识别&#xff0c;由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力&#xff0c;广…...

全面解析数据库:从基础概念到前沿应用​

在数字化时代&#xff0c;数据已成为企业和社会发展的核心资产&#xff0c;而数据库作为存储、管理和处理数据的关键工具&#xff0c;在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理&#xff0c;到社交网络的用户数据存储&#xff0c;再到金融行业的交易记录处理&a…...