当前位置: 首页 > 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…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

什么是VR全景技术

VR全景技术&#xff0c;全称为虚拟现实全景技术&#xff0c;是通过计算机图像模拟生成三维空间中的虚拟世界&#xff0c;使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验&#xff0c;结合图文、3D、音视频等多媒体元素…...