基于Resnet、LSTM、Shufflenet及CNN网络的Daily_and_Sports_Activities数据集仿真

本文为稀土掘金技术社区首发签约文章,30天内禁止转载,30天后未获授权禁止转载,侵权必究!

在深度学习领域,不同的网络结构设计用于解决特定的问题。本文将详细分析四种主流网络结构:卷积神经网络(CNN)、残差网络(ResNet)、长短期记忆网络(LSTM)和洗牌网络(ShuffleNet),并通过实际的实验,来分析一下这四种网络结构对于Daily_and_Sports_Activities数据集的实验仿真效果。

一、四种网络结构对比分析

1.CNN(Convolutional Neural Network)

CNN 是深度学习中用于处理具有网格结构的数据(如图像)的网络结构。

python 复制代码
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 通过引入残差学习解决了深层网络训练中的梯度消失问题。

python 复制代码
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,设计用来解决长序列数据中的梯度消失问题。

python 复制代码
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,设计用于移动和嵌入式设备。

python 复制代码
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)
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,这表明其在预测时具有较高的置信度。
  • 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可能更适合那些具有明显时间序列特性的数据集。

注意 :具体的代码实现和模型细节可以联系作者获取,以便进一步的研究和应用。本文首发于稀土掘金,未经允许禁止转发和二次创作,侵权必究。

相关推荐
charley.layabox2 小时前
8月1日ChinaJoy酒会 | 游戏出海高端私享局 | 平台 × 发行 × 投资 × 研发精英畅饮畅聊
人工智能·游戏
DFRobot智位机器人2 小时前
AIOT开发选型:行空板 K10 与 M10 适用场景与选型深度解析
人工智能
想成为风筝4 小时前
从零开始学习深度学习—水果分类之PyQt5App
人工智能·深度学习·计算机视觉·pyqt
F_D_Z4 小时前
MMaDA:多模态大型扩散语言模型
人工智能·语言模型·自然语言处理
大知闲闲哟5 小时前
深度学习G2周:人脸图像生成(DCGAN)
人工智能·深度学习
飞哥数智坊5 小时前
Coze实战第15讲:钱都去哪儿了?Coze+飞书搭建自动记账系统
人工智能·coze
wenzhangli75 小时前
低代码引擎核心技术:OneCode常用动作事件速查手册及注解驱动开发详解
人工智能·低代码·云原生
潘达斯奈基~6 小时前
大模型的Temperature、Top-P、Top-K、Greedy Search、Beem Search
人工智能·aigc
倔强青铜三6 小时前
苦练Python第18天:Python异常处理锦囊
人工智能·python·面试
倔强青铜三6 小时前
苦练Python第17天:你必须掌握的Python内置函数
人工智能·python·面试