基于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数据集涉及几个关键步骤,包括数据预处理、模型选择、训练配置、训练执行以及评估,以下是我们整个流程的概述:

  1. 环境搭建:导入所需的库,包括PyTorch、NumPy、os等,并设置工作目录。

  2. 参数解析:使用argparse库解析命令行参数,设置数据集、模型、保存路径、批量大小、训练周期数和学习率等。

  3. 数据集和模型定义:定义数据集和模型的字典,便于选择不同的数据集处理类和模型架构。

  4. 参数处理和设备配置:根据参数设置数据保存路径、选择计算设备(GPU或CPU)。

  5. 数据加载和预处理:加载数据集,如果.npy格式的数据已存在则直接加载,否则进行数据预处理并保存。

  6. 张量转换:将数据和标签转换为PyTorch张量,为模型训练做准备。

  7. 模型实例化:根据选择的模型架构实例化模型对象。

  8. 数据加载器:创建训练和测试的DataLoader,用于批量加载数据。

  9. 配置优化器和损失函数:设置AdamW优化器、学习率调度器和交叉熵损失函数。

  10. 训练执行:进行训练循环,包括前向传播、损失计算、反向传播和参数更新。

  11. 评估:在每个周期结束时,在测试集上评估模型性能,计算准确率、精确度、召回率和F1分数。

  12. 结果记录:打印输出训练和测试结果,记录模型性能。

整个过程记录我们自己的模型训练和评估的流程,具体的代码太过于多,就不展示了,需要可以联系我获取。

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)
CNN0.87930.91600.87930.89739569471.3570
ResNet0.87240.91940.87340.895315027373.3007
LSTM0.80300.82440.80300.813633940652.7796
ShuffleNet0.87160.90790.87160.889411603411.7889

2.分析与总结

2.1准确率与召回率

  • CNN 在准确率上表现最佳,达到了0.8793,其次是ResNet,准确率为0.8724。这表明CNN在分类任务上具有较好的总体性能。
  • LSTM 的准确率和召回率较低,分别为0.8030,这可能与其处理时间序列数据的特性有关,而DASA数据集可能不完全适合LSTM的结构。

2.2精确率与F1分数

  • ResNet 在精确度上表现最佳,达到了0.9194,这表明其在预测时具有较高的置信度。
  • CNNResNet 的F1分数接近,分别为0.8973和0.8953,说明两者在精确度和召回率之间取得了较好的平衡。

2.3参数量

  • LSTM 拥有最多的参数,达到了3394065,这可能是由于其复杂的门控机制导致的。
  • ResNet 由于其深层结构,参数量也较多,为1502737。
  • ShuffleNetCNN 的参数量相对较少,分别为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可能更适合那些具有明显时间序列特性的数据集。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法进阶:贪心算法

贪心算法是一种简单而直观的算法思想,它在每一步选择中都采取在当前状态下最优的选择,以期望最终得到全局最优解。贪心算法通常适用于一些具有最优子结构的问题,即问题的最优解可以通过一系列局部最优解的选择得到。 贪心算法的基本思路是&a…

139.《python中的正则详解》

文章目录 什么是正则正则表达式语法正则demo1.匹配模式2.finditer3.正则分组4.非捕获组5.分组的引用6. 正则替换7.正则切割7.正则「或」7.枚举取反 面试题 前言: 拉开差距的不是上班的8小时,而是下班后的16小时,同志们,加油,卷起!!! 什么是正则 1.正则表达式是一种高级文本处理…

从安全角度看 SEH 和 VEH

从安全角度看 SEH 和 VEH 异常处理程序是处理程序中不可预见的错误的基本方法之一 https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/exceptions/ SEH——结构化异常处理程序 就其工作方式而言,异常处理程序与其他处理程序相比相当基础&#xff0…

ESP-IDF学习记录(3)ESP-IDF组件管理

既然官方把这个组件管理按钮放置的这么明显,就一定有他的用心良苦,今天学习一下这个组件管理。 Componments manager 1.给当前项目安装组件 IDF Component Manager and ESP Component Registry Documentation — IDF Component Management documenta…

华为麦芒5(安卓6)termux记录 使用ddns-go,alist

下载0.119bate1 安卓5和6版本,不能换源,其他源似乎都用不了,如果root可以直接用面具模块 https://github.com/termux/termux-app/releases/download/v0.119.0-beta.1/termux-app_v0.119.0-beta.1apt-android-5-github-debug_arm64-v8a.apk 安装ssh(非必要) pkg install open…

园区网综合拓扑实验

一、实验要求 实验拓扑图如上图所示 1、按照图示的VLAN及IP地址需求,完成相关配置 2、要求SW1为VLAN 2/3的主根及主网关 SW2为vlan 20/30的主根及主网关 SW1和SW2互为备份 3、可以使用super vlan(本实验未使用) 4、上层…

JSON 系列之4:JSON_VALUE

JSON_VALUE的作用,简单来说,就是从JSON到SQL: SQL/JSON function JSON_VALUE selects JSON data and returns a SQL scalar or an instance of a user-defined SQL object type or SQL collection type (varray, nested table) 所以&#xff…

设置首选网络类型以及调用Android框架层的隐藏API

在Android SDK中提供的framework.jar是阉割版本的,比如有些类标记为hide,这些类不会被打包到这个jar中,而有些只是类中的某个方法或或属性被标记为hide,则这些类或属性会被打包到framework.jar,但是我们无法调用&#…

Mac 12.1安装tiger-vnc问题-routines:CRYPTO_internal:bad key length

背景:因为某些原因需要从本地mac连接远程linxu桌面查看一些内容,必须使用桌面查看,所以ssh无法满足,所以决定安装vnc客户端。 问题: 在mac上通过 brew install tiger-vnc命令安装, 但是报错如下: > D…

【Java-tesseract】OCR图片文本识别

文章目录 一、需求二、概述三、部署安装四、技术细节五、总结 一、需求 场景需求:是对识别常见的PNG,JPEG,TIFF,GIF图片识别,环境为离线内网。组件要求开源免费,并且可以集成Java生成接口服务。 二、概述 我不做选型对比了,我筛选测试了下Tesseract(v…

PCIe和DMA:数据传输的“双子星“

简单来说,PCIe是一种硬件总线标准,就像高速公路;DMA是一种数据传输机制,就像在高速公路上行驶的卡车。所以这两个是两种不同的概念。 理解PCIe传输 PCIe(PCI Express)是一种硬件接口规范,定义…

VS Code中怎样查看某分支的提交历史记录

VsCode中无法直接查看某分支的提交记录,需借助插件才行,常见的插件如果git history只能查看某页面的改动记录,无法查看某分支的整体提交记录,我们可以安装GIT Graph插件来解决这个问题 1.在 VSCode的插件库中搜索 GIT Graph安装&a…

第三方接口设计注意要点

实际工作中,我们会遇到与三方系统对接的情形,比如对接短信服务、支付服务、地图服务、以及一些外部业务系统的调用和回调等等,不论是我们调用第三方接口还是我们为其他系统提供接口服务,调用过程中会遇到一些大大小小的问题和吐槽…

使用 pushy 热更新后 sentry 不能正常显示源码

问题 使用 Android Studio 打包后,上传使用 sentry 官网命令打包的 sourcemap 文件,sentry能正常显示异常位置源码。 使用 pushy 热更新之后,sentry 不能正常显示异常位置的源代码。 如下图: 问题原因: 使用 pushy …

Nginx的性能分析与调优简介

Nginx的性能分析与调优简介 一、Nginx的用途二、Nginx负载均衡策略介绍与调优三、其他调优方式简介四、Nginx的性能监控 一、Nginx的用途 ‌Nginx是一种高性能的HTTP和反向代理服务器,最初作为HTTP服务器开发,主要用于服务静态内容如HTML文件、图像、视…

第26周:文献阅读

目录 摘要 Abstract 文献阅读 现有问题 提出方法 创新点 CEEMDAN-BiGRU-SVR-MWOA框架 多源数据融合 参数优化 方法论 实验研究 数据准备 评估指标 结论 适应性分析 总结 摘要 本周阅读的文献是《A Hybrid Data-Driven Deep Learning Prediction Framework fo…

微信V3支付报错 平台证书及平台证书序列号

1.平台证书及平台证书序列号设置错误报错: 错误1: Verify the response’s data with: timestamp1735184656, noncea5806b8cabc923299f8db1a174f3a4d0, signatureFZ5FgD/jtt4J99GKssKWKA/0buBSOAbWcu6H52l2UqqaJKvrsNxvodB569ZFz5G3fbassOQcSh5BFq6hvE…

LunarVim安装

LunarVim以其丰富的功能和灵活的定制性,迅速在Nvim用户中流行开来。它不仅提供了一套完善的默认配置,还允许用户根据自己的需求进行深度定制。无论是自动补全、内置终端、文件浏览器,还是模糊查找、LSP支持、代码检测、格式化和调试&#xff…

2024.12.25在腾讯云服务器上使用docker部署flask

2024.12.25在腾讯云服务器上使用docker部署flask 操作系统:Ubuntu 根据腾讯云的说明文档安装 Docker 并配置镜像加速源,注意需要安装腾讯云的加速源,使用官网的加速源连接极其不稳定,容易导致运行失败。使用哪个公司的云服务器就…

程序员使用Cursor做独立开发教程

简介 欢迎来到Cursor的独立开发教程!在这里,我们将一步步指导您如何成为一名成功的独立开发者,从寻找需求、开发网站、获取流量到网站变现,我们将覆盖独立开发的完整生命周期。 第1章:理解独立开发 1.1 独立开发的…