基于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可能更适合那些具有明显时间序列特性的数据集。

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

相关推荐
罗必答2 小时前
意得辑ABSJU202优惠15%啦,新用户注册直减哦
人工智能
羞儿3 小时前
【读点论文】基于二维伽马函数的光照不均匀图像自适应校正算法
人工智能·算法·计算机视觉
算法金「全网同名」4 小时前
算法金 | 时间序列预测真的需要深度学习模型吗?是的,我需要。不,你不需要?
深度学习·机器学习·数据分析
SEU-WYL4 小时前
基于深度学习的文本框检测
人工智能·深度学习·dnn
B站计算机毕业设计超人4 小时前
计算机毕业设计Python深度学习美食推荐系统 美食可视化 美食数据分析大屏 美食爬虫 美团爬虫 机器学习 大数据毕业设计 Django Vue.js
大数据·python·深度学习·机器学习·数据分析·课程设计·推荐算法
电商运营花4 小时前
告别盲目跟风!1688竞品数据分析实战指南(图文解析)
大数据·人工智能·经验分享·笔记·数据挖掘·数据分析
Rjdeng4 小时前
【AI大模型】驱动的未来:穿戴设备如何革新血液、皮肤检测与营养健康管理
人工智能·ai·穿戴设备·血液分析·营养健康
baivfhpwxf20235 小时前
select_shape 借助形状特征选择区域
人工智能·笔记
夕小瑶5 小时前
守口如瓶,OpenAI刻意隐瞒的黑客攻击事件时隔一年被证实
人工智能·深度学习·机器学习·自然语言处理
啊取名真困难5 小时前
AI艺术创作机器人:探索科技与艺术的交汇点
人工智能·科技·机器人