基于Resnet、LSTM、Shufflenet及CNN网络的Daily_and_Sports_Activities数据集仿真
在深度学习领域,不同的网络结构设计用于解决特定的问题。本文将详细分析四种主流网络结构:卷积神经网络(CNN)、残差网络(ResNet)、长短期记忆网络(LSTM)和洗牌网络(ShuffleNet),并通过实际的实验,来分析一下这四种网络结构对于Daily_and_Sports_Activities数据集的实验仿真效果。
要在文章一开始配合图例的方式更具体地介绍数据集和实验目标,可以采用以下结构:
一、Daily_and_Sports_Activities数据集与实验目标
1.1 Daily_and_Sports_Activities数据集简介
Daily_and_Sports_Activities数据集包含了19类日常活动和体育活动的图像,旨在训练和测试深度学习模型对不同活动类型的识别能力。

并且数据集中的图像经过预处理,都变成了包含有各种动作信息的坐标,方便我们去进行进一步的实验分析:


1.2 实验目标
我们的目标是评估和比较四种不同的深度学习网络结构在处理同一数据集时的性能。具体来说,我们将关注以下几个关键指标:
- 准确率(Accuracy):模型正确分类的图像比例。
- 精确率(Precision):在所有预测为正的图像中,真正为正的比例。
- 召回率(Recall):在所有实际为正的图像中,被正确预测为正的比例。
- F1分数(F1-score):精确率和召回率的调和平均值,衡量模型在精确度和召回率之间的平衡。
- 参数量(Parameter):模型中的总参数数量,影响模型的复杂度和计算资源需求。
- 推理时间(Inference Time):模型对单个图像进行预测所需的时间,反映模型的实时处理能力。
二、四种网络结构对比分析
1.CNN(Convolutional Neural Network)
CNN 是深度学习中用于处理具有网格结构的数据(如图像)的网络结构,卷积神经网络的基本结构大致包括:卷积层、激活函数、池化层、全连接层、输出层:

更具体来看:

网络代码实现:
class CNN(nn.Module):def __init__(self, train_shape, category):super(CNN, self).__init__()# 构建卷积层、批量归一化层和ReLU激活函数的序列self.layer = nn.Sequential(# 卷积层的参数:输入通道、输出通道、卷积核大小、步长、填充nn.Conv2d(1, 64, (3, 1), (2, 1), (1, 0)),nn.BatchNorm2d(64),nn.ReLU(),# 更多卷积层...)# 自适应平均池化层和全连接层self.ada_pool = nn.AdaptiveAvgPool2d((1, train_shape[-1]))self.fc = nn.Linear(512*train_shape[-1], category)
特点分析:
- 局部连接:每个卷积神经元只与输入数据的一个局部区域相连接,这减少了计算量。
- 权重共享:卷积核的权重在整个输入数据上共享,进一步减少模型参数。
- 层次结构:通过多层结构,CNN能够学习从简单到复杂的特征表示。
- 自动提取特征:无需手动设计特征提取器,CNN能够自动学习数据中的特征。
2.ResNet(Residual Neural Network)

残差网络是一种深度学习模型,通过引入“残差学习”的概念来解决深度神经网络训练困难的问题。ResNet 通过引入残差学习解决了深层网络训练中的梯度消失问题。
class Block(nn.Module):def __init__(self, inchannel, outchannel, stride):super().__init__()# 构建残差块self.block = nn.Sequential(nn.Conv2d(inchannel, outchannel, (3, 1), (stride, 1), (1, 0)),# 更多层...)# 残差连接self.short = nn.Sequential()if (inchannel != outchannel or stride != 1):self.short = nn.Sequential(nn.Conv2d(inchannel, outchannel, (3, 1), (stride, 1), (1, 0)),)
输入通过一个或多个卷积层后,与输入相加,形成残差。这样做可以使得网络学习到的是输入和输出之间的残差,而不是直接学习输出,从而缓解了梯度消失问题,使得网络可以成功训练更深的模型。

特点分析:
- 残差连接:通过添加输入到输出,允许梯度更有效地传播到前面的层。
- 简化训练:残差连接使得网络可以训练得更深,而不会出现梯度消失或爆炸的问题。
- 恒等映射:在某些情况下,网络层可以学习到恒等映射,这有助于网络学习更复杂的函数。
3.LSTM(Long Short-Term Memory)
LSTM 是一种特殊的 RNN,设计用来解决长序列数据中的梯度消失问题。
class LSTM(nn.Module):def __init__(self, train_shape, category):super().__init__()# 构建LSTM层self.lstm = nn.LSTM(train_shape[-1], 512, 2, batch_first=True)# 全连接层self.fc = nn.Linear(512, category)
特点分析:
- 门控机制:包含输入门、遗忘门和输出门,控制信息的流动,使得网络能够学习长期依赖。
- 序列处理:LSTM能够处理序列数据,适用于时间序列预测、语言模型等任务。
- 记忆能力:LSTM的单元状态可以跨越时间步骤进行信息传递,这使得网络能够记住长期信息。
4.ShuffleNet(洗牌网络)
ShuffleNet 是一种轻量级的 CNN,设计用于移动和嵌入式设备,它通过使用分组卷积和通道洗牌操作来减少计算量,同时保持了较高的准确率。

分组卷积:将输入通道分成多个组,每组独立进行卷积操作,然后合并结果。这样可以减少计算量和参数数量。

通道洗牌:在分组卷积后,通过通道洗牌操作重新混合不同组的特征图,以保持特征的多样性。
class ChannelShuffleModule(nn.Module):def __init__(self, channels, groups):super().__init__()# 通道混合模块
特点分析:
- 深度可分离卷积:减少了模型的计算量和参数数量。
- 通道混合:通过重组通道提高了模型的表达能力,同时保持了计算效率。
- 轻量化设计:ShuffleNet通过特定的设计减少了模型的复杂性,适用于计算资源受限的环境。
5.总结
每种网络结构都有其特定的优势和适用场景,CNN 提供了一种强大的特征提取方法,适用于图像识别等领域。ResNet 通过残差连接解决了深层网络的训练难题。LSTM 以其门控机制在序列数据处理方面表现出色。ShuffleNet 则是一种为移动和嵌入式设备设计的轻量级网络。在设计深度学习模型时,需要根据任务的具体需求、数据的特性以及可用的计算资源来选择最合适的网络结构,接下来我们将进行实际的实验训练,来分析一下这四种网络结构对于Daily_and_Sports_Activities数据集仿真实验。
三、具体的实验仿真和对比
在对Daily_and_Sports_Activities数据集进行的实验中,我们对比了CNN、ResNet、LSTM和ShuffleNet四种网络结构的性能。
Daily_and_Sports_Activities 数据集训练方法概述
训练Daily_and_Sports_Activities数据集涉及几个关键步骤,包括数据预处理、模型选择、训练配置、训练执行以及评估,以下是我们整个流程的概述:
-
环境搭建:导入所需的库,包括PyTorch、NumPy、os等,并设置工作目录。
-
参数解析:使用argparse库解析命令行参数,设置数据集、模型、保存路径、批量大小、训练周期数和学习率等。
-
数据集和模型定义:定义数据集和模型的字典,便于选择不同的数据集处理类和模型架构。
-
参数处理和设备配置:根据参数设置数据保存路径、选择计算设备(GPU或CPU)。
-
数据加载和预处理:加载数据集,如果
.npy格式的数据已存在则直接加载,否则进行数据预处理并保存。 -
张量转换:将数据和标签转换为PyTorch张量,为模型训练做准备。
-
模型实例化:根据选择的模型架构实例化模型对象。
-
数据加载器:创建训练和测试的DataLoader,用于批量加载数据。
-
配置优化器和损失函数:设置AdamW优化器、学习率调度器和交叉熵损失函数。
-
训练执行:进行训练循环,包括前向传播、损失计算、反向传播和参数更新。
-
评估:在每个周期结束时,在测试集上评估模型性能,计算准确率、精确度、召回率和F1分数。
-
结果记录:打印输出训练和测试结果,记录模型性能。
整个过程记录我们自己的模型训练和评估的流程,具体的代码太过于多,就不展示了,需要可以联系我获取。
1.1 CNN网络结构

1.2 训练结果

2.1 ResNet网络结构

2.2 训练结果

3.1 LSTM网络结构

3.2 训练结果
4.1 shufflenet网络结构

4.2 训练结果

四、实验结果分析
将四种模型得到的训练结果写入表格中,得到了如下图所示的结果,分别对其 准确率(Accuracy)、精确率(Precision) 、召回率(Recall) 、F1分数(F1-score)、参数量(Parameters)和推理时间(Inference Time) 进行分析和对比:
1.实验结果概览
| 模型名 | 准确率(Accuracy) | 精确率(Precision) | 召回率(Recall) | F1分数(F1-score) | 参数量(Parameter) | 推理时间(Inference Time) |
|---|---|---|---|---|---|---|
| CNN | 0.8793 | 0.9160 | 0.8793 | 0.8973 | 956947 | 1.3570 |
| ResNet | 0.8724 | 0.9194 | 0.8734 | 0.8953 | 1502737 | 3.3007 |
| LSTM | 0.8030 | 0.8244 | 0.8030 | 0.8136 | 3394065 | 2.7796 |
| ShuffleNet | 0.8716 | 0.9079 | 0.8716 | 0.8894 | 1160341 | 1.7889 |
2.分析与总结
2.1准确率与召回率
- CNN 在准确率上表现最佳,达到了0.8793,其次是ResNet,准确率为0.8724。这表明CNN在分类任务上具有较好的总体性能。
- LSTM 的准确率和召回率较低,分别为0.8030,这可能与其处理时间序列数据的特性有关,而DASA数据集可能不完全适合LSTM的结构。
2.2精确率与F1分数
- ResNet 在精确度上表现最佳,达到了0.9194,这表明其在预测时具有较高的置信度。
- CNN 和 ResNet 的F1分数接近,分别为0.8973和0.8953,说明两者在精确度和召回率之间取得了较好的平衡。
2.3参数量
- LSTM 拥有最多的参数,达到了3394065,这可能是由于其复杂的门控机制导致的。
- ResNet 由于其深层结构,参数量也较多,为1502737。
- ShuffleNet 和 CNN 的参数量相对较少,分别为1160341和956947,这使得它们在计算资源受限的环境中更具优势。
2.4推理时间
- CNN 的推理时间最短,为1.3570秒,这与其较少的参数量和高效的卷积运算有关。
- LSTM 的推理时间最长,为2.7796秒,这可能是因为其处理序列数据的循环特性导致计算成本较高。
- ShuffleNet 的推理时间为1.7889秒,介于CNN和LSTM之间。
3.个人观点
从实验结果来看,CNN和ResNet在准确率和精确度上表现较为突出,这可能是因为它们能够有效地捕捉图像特征,并且ResNet的残差连接有助于训练更深的网络。LSTM虽然在参数量上最多,但在该数据集上的表现并不理想,可能是因为DASA数据集并不完全是序列数据,LSTM的优势在于处理长序列依赖关系,而DASA数据集的特点可能并未充分发挥这一优势。
ShuffleNet在推理时间上表现良好,这表明它在需要快速推理的应用场景中可能是一个不错的选择。同时,它的参数量和准确率也相对平衡,适合资源受限的设备。
综上所述,选择哪种网络结构应根据具体的应用场景和需求来决定。如果需要快速推理并且对准确率有一定要求,CNN或ShuffleNet可能是更好的选择;如果需要构建深层网络并且对精确度有较高要求,ResNet可能更合适;而LSTM可能更适合那些具有明显时间序列特性的数据集。
相关文章:
基于Resnet、LSTM、Shufflenet及CNN网络的Daily_and_Sports_Activities数据集仿真
在深度学习领域,不同的网络结构设计用于解决特定的问题。本文将详细分析四种主流网络结构:卷积神经网络(CNN)、残差网络(ResNet)、长短期记忆网络(LSTM)和洗牌网络(Shuff…...
mac系统vsCode中使用Better Comments在.vue文件里失效
问题:关于Better Comments默认在html、TS、JS中有效,在vue中无效,需要单独进行配置 windows系统可以参考友链Better Comments(注释高亮)在vue文件里失效的问题 关于Better Comments电脑的配置路径: Windows系统&…...
UE5.3 C++ Ceiusm中的POI 制作3DUI 结合坐标转化
一.核心思路WidgetComponent CesiumGloberAnchor 二.先制作POI 创建C Actor来制作,APOI。直接上代码 #pragma once#include "CoreMinimal.h" #include "GameFramework/Actor.h" #include "CesiumGlobeAnchorComponent.h" #includ…...
一起学Git【第六节:查看版本差异】
git diff是 Git 版本控制系统中用于展示差异的强大工具。他可以用于查看文件在工作区、暂存区和版本库之间的差异、任意两个指定版本之间的差异和两个分支之间的差异等,接下来进行详细的介绍。 1.显示工作区与暂存区之间的差异 # 显示工作区和暂存区之间的差异,后面不加参数…...
numpy np.newaxis介绍
np.newaxis 是 NumPy 中用于增加数组维度的关键字。它的作用是为数组插入一个新的维度,从而改变数组的形状(shape)。 基本用法 np.newaxis 等价于 None,可以作为索引使用,用于在指定位置增加一个维度。增加的维度的大…...
小程序配置文件 —— 16 项目配置文件和配置 sass
目录 项目配置文件配置 sass 项目配置文件 在创建项目的时候,每个项目的根目录生成两个 config.json 文件(project.config.json 和 project.private.config.json ),用于保存开发者在工具上做的个性化配置,例如和编译有…...
【yolov5】实现FPS游戏人物检测,并定位到矩形框上中部分,实现自瞄
介绍 本人机器学习小白,通过语言大模型百度进行搜索,磕磕绊绊的实现了初步效果,能有一些锁头效果,但识别速度不是非常快,且没有做敌友区分,效果不是非常的理想,但在4399小游戏中爽一下还是可以…...
概率统计与随机过程--作业5
一、推导题 二、计算题 1、某单位为了研究太阳镜销售和广告费用之间的关系,搜集了以下数据,使用回归分析方法得到线性回归模型: 广告费用(万元)x 2 5 6 7 22 25 28 30 22 18 销售量(个…...
“802.11g”,“802.11n”,“802.11ac”,“802.11ax”
802.11g、802.11n、802.11ac、802.11ax都是IEEE制定的无线局域网(WLAN)标准,它们各自具有不同的特点和性能。以下是对这四个标准的详细介绍: 1. 802.11g 定义:802.11g是IEEE制定的一种无线局域网标准,它提…...
Kubernetes 常用的网络插件
上篇内容跟大家简单聊了k8s网络模型原理。分别围绕着容器、Pod、Service、网络策略等展开了详细的讲解。这次想跟大家聊聊k8s的CNI网络插件。 CNI 是 Kubernetes 网络模型的核心组件,它是一个插件接口,允许用户选择和配置网络插件来管理 Pod 的网络。CN…...
Retrofit和rxjava 实现窜行请求,并行请求,循环多次请求,递归请求,错误重试
在使用 Retrofit 和 RxJava 时,可以通过多种方式实现多次请求,比如串行请求、并行请求、依赖请求等。以下是一些常见的实现方式: 1. 串行请求(依赖关系) 一个请求的结果作为另一个请求的输入,可以用 flat…...
2025年度好用便签推荐,电脑桌面便签app分享
在快节奏的现代生活中,高效的时间管理和任务规划变得尤为重要。一款好用的便签软件不仅能帮助我们记录灵感、待办事项,还能极大地提升我们的工作效率。 在众多电脑桌面便签中,好用便签以其出色的桌面便签功能脱颖而出,备受用户青…...
【论文解读】Arbitrary-steps Image Super-resolution via Diffusion Inversion
级别:arXiv Computer Vision and Pattern Recognition(2024)作者:Zongsheng Yue,Kang Liao,Chen Change Loy时间:2024论文链接:Arbitrary-steps Image Super-resolution via Diffusion Inversion摘要 技术概述:该技术基于扩散反转,通过设计部分噪声预测策略来构建扩散…...
kkFileView集成springboot:使用自定义预览接口(非minio预览接口),发现无法预览资源
目录 1、背景2、原因分析3、解决办法 1、背景 按照项目验收要求,需要对minio中存储的数据进行加密 之前提供给kkFileView的预览地址都是获取的minio预览地址 由于minio中的资源进行了加密处理,所以我们自定义预览接口(进行解密操作ÿ…...
被裁20240927 --- 嵌入式硬件开发 STM32篇
人很容易原谅别人的错误但很难原谅别人的正确 1. 文档、手册、指南、资源2. MCU 结构3. MCU 和 MPU 的区别4. 一些概念什么是看门狗 ?什么是 DMA ?什么是晶振 ?什么是片内外设?软件协议、硬件协议、数据协议、通讯协议、通信协议u…...
留学生交流互动系统|Java|SSM|VUE| 前后端分离
【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7 4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库可…...
C/C++ 数据结构与算法【图】 图+邻接矩阵+邻接表+DFS+BFS+最小生成树+最短路径+拓扑排序详细解析【日常学习,考研必备】带图+详细代码
一、图的定义 1)无向图,有向图,完全图 2)稀疏图,稠密图,网,邻接,关联 3)度 4)路径 5)连通图 6)权与网 7)子图 8࿰…...
Linux实验报告7-文件管理
目录 一:实验目的 二:实验内容 (1)查看/etc/inittab文件的权限属性,并指出该文件的所有者以及文件所属组群。 (2)新建文件test,设置文件权限为r--r-----。 (3)新建文件test2,设系统中有用户study和用户组studygr…...
RJ45网口模块设计
1、以太网概述及RJ45实物 2、常用网口信号介绍 3、RJ45网口布局布线要点分析 4、总结 1、变压器下面需要进行挖空处理,以免底下的铜引入干扰,(将多边形挖空区域的所在层设置为Multi-Layer多层) 2、为了更直观的看一个类中线的长…...
电子电器架构 --- 智能座舱HUD技术革新
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源&…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
