基于CNN-LSTM(卷积神经网络-长短期记忆)的多输入分类任务实现——附代码

news/2025/1/12 3:45:21/

目录

摘要:

卷积神经网络(CNN)

 长短期记忆神经网络(LSTM)

CNN-LSTM网络构建:

具体实现流程:

 本文Matalb代码分享:


摘要:

此示例演示如何通过将二维卷积神经网络(CNN)与长短期记忆(LSTM)层相结合,为多输入的语音序列分类任务创建二维CNN-LSTM网络。CNN通过将滑动卷积滤波器应用于输入来处理序列数据。CNN可以从空间和时间维度学习特征。LSTM网络通过循环时间步长和学习时间步之间的长期依赖关系来处理序列数据。CNN-LSTM网络使用卷积层和LSTM层从训练数据中学习。

本代码基于Matlab平台编写实现,使用Maltab自带的数据集,注释详细,使用者可通过更改训练数据集实现自己需要的效果,实现初学者模仿学习。

卷积神经网络(CNN)

CNN是一种前馈式神经网络,由输入层、卷积层、池化层、全连接层和输出层构成。CNN被广泛应用于图像识别、模式分类、物体检测、人脸识别、时间序列数据等方面。卷积神经网络(CNN),是一种专门用来处理具有类似网格结构的数据的神经网络。CNN网络是指那些至少在网络的一层中使用卷积运算来替代一般的矩阵乘法运算的神经网络。由于CNN在计算时采用了卷积运算,其运算速度相比于一般的矩阵运算有了很大的提高。CNN的卷积层和池化层的交替使用能够有效提取数据局部特征并降低局部特征维度。由于权值共享,可以减少权值数量、降低模型的复杂度。一维卷积对于时间序列的特征提取的输出为:

 长短期记忆神经网络(LSTM)

长短期记忆网络(LSTM,Long Short-Term Memory)是一种时间循环神经网络,是为了解决一般的RNN(循环神经网络)存在的长期依赖问题而专门设计出来的,所有的RNN都具有一种重复神经网络模块的链式形式。在标准RNN中,这个重复的结构模块只有一个非常简单的结构,例如一个tanh层。LSTM是一种含有LSTM区块(blocks)或其他的一种类神经网络,文献或其他资料中LSTM区块可能被描述成智能网络单元,因为它可以记忆不定时间长度的数值,区块中有一个gate能够决定input是否重要到能被记住及能不能被输出output。图1底下是四个S函数单元,最左边函数依情况可能成为区块的input,右边三个会经过gate决定input是否能传入区块,左边第二个为input gate,如果这里产出近似于零,将把这里的值挡住,不会进到下一层。左边第三个是forget gate,当这产生值近似于零,将把区块里记住的值忘掉。第四个也就是最右边的input为output gate,他可以决定在区块记忆中的input是否能输出。

LSTM网络是对循环神经网络(recurrentneuralnetwork,RNN)的一种改进,其通过加入门结构,有效解决了RNN存在的梯度消失和梯度爆炸。LSTM网络中加入的细胞记忆单元,使得LSTM网络具有良好的记忆能力,被广泛应用在时间序列预测当中。其具体计算式为:

CNN-LSTM网络构建:

多特征序列分类CNN-LSTM模型结构如图所示,主要由信号输入层,CNN卷积层、池化层、LSTM层及分类输出层组成。基于CNN-LSTM的多输入序列分类任务过程如下:

(1)将输入信号标准化,输入CNN卷积层,利用宽卷积核自适应提取特征;

(2)提取后的特征经过最大池化层的池化操作,降低数据维度,并保留主要的特征信息;

(3)再将降维后的特征数据作为LSTM层的特征输入,用以训练神经网络并自动学习序列特征;

(4)利用Adam算法将训练误差反向传播,逐层逐步更新模型参数;

(5)使用Softmax激活函数,将信号特征进行分类,完成多特征输入序列的分类任务。

具体实现流程:

(1)加载训练数据,并查看每一类数据的个数

 可以看到,本文数据一共有7类,每个类约有70个数据序列。

(2)准备训练数据

将数据拆分为训练、验证和测试数据。将 70% 的数据用于训练,将 15% 的数据用于验证,将 15% 的数据用于测试。

(3)构建CNN_LSTM框架

a. 对于序列输入,请指定输入大小与输入数据匹配的序列输入图层。要确保网络支持训练数据,请将该选项设置为训练数据中最短序列的长度。

b. 要学习一维图像序列中的空间关系,请使用二维 CNN 架构,其中包含卷积、批量归一化、ReLU 和最大池化层的四个重复块。为第三和第四卷积层指定越来越多的过滤器。

c. 要了解一维图像序列中的长期依赖关系,请包括一个具有 1 个隐藏单元的 LSTM 层。要将序列映射到单个值以进行预测,请将选项设置为 ,仅输出最后一个时间步长。OutputMode"last"

d. 对于分类,包括大小等于类数的全连接图层。要将输出转换为概率向量,请包含一个 softmax 层。

e. 包括分类图层。

(4)指定训练选项

a. 使用 Adam 求解器训练小批量大小为 32 的网络,用于三个时期。

b. 以 0.005 的初始学习率进行训练,并在两个 epoch 后分段降低学习率。

c. 为避免过度拟合训练数据,请指定值为 2.0 的 L0005 正则化项。

(5)训练网络

(6)测试网络

通过将保留检验集上的预测与每个检验观测值的真实标签进行比较,测试模型的分类准确性。

使用经过训练的网络对测试数据进行分类。

 本文Matalb代码分享:


http://www.ppmy.cn/news/37061.html

相关文章

自然语言大模型介绍

1 简介 最近一直被大语言模型刷屏。本文是周末技术分享会的提纲,总结了一些自然语言模型相关的重要技术,以及各个主流公司的研究方向和进展,和大家共同学习。 2 Transformer 目前的大模型基本都是Transformer及其变种。本部分将介绍Transf…

11. C#高级进阶

目录 # .NET API 一、C# 异常处理 1、try/catch语句 2、C# 中的异常类 3、自定义异常类 4、C# 抛出异常 二、C# 目录操作 1、DirectoryInfo 类 2、FileInfo 类 三、C# 文件读写 1、C# 中的 I/O 类 2、FileStream 类 3、C# 中文本文件的读取/写入 (1&a…

java调用python方法及常用的java调用python代码

Python语言作为一种流行的高级编程语言,在 Java开发中也是经常被使用到的。那么在 Java中如何调用 Python呢? 1、首先我们要知道, Java是一门面向对象的语言,所以我们可以通过方法和属性来调用 Python。 2、方法: &…

个人百度百科词条创建怎么收费?

互联网时代,百科营销起到举足轻重的作用,因为现在几乎人人都会在百度上去搜索答案, 当用户不了解你的时候,考虑是否和你合作的时候,也会下意识地去百度上搜索一下,看看有没有相关介绍。 这个时候创建一个百…

SolidWorks 2018版本介绍

solidwords 2018介绍SolidWorks 2018安装包SolidWorks 2018安装过程1、SolidWorks 2018 的介绍2、SolidWorks 2018 的特点3、SolidWorks 2018 的功能4、SolidWorks 2018快捷键SolidWorks 2018安装包 链接:https://pan.baidu.com/s/14TUadlx6KHcJmXev8LhakA 提取码&a…

TC275-点亮属于AutoSAR的灯之MCAL配置

前面 前段时间算是通过S32K144这个芯片对AutoSAR开发的大概流程有了一个了解,但苦于最后代码集成和编译器配置上的烦恼,所以决定换一个平台来进行开发(有教程,手动狗头)。 英飞凌的Aurix系列——TC275。 配置 Reso…

2023年全国最新高校辅导员精选真题及答案34

百分百题库提供高校辅导员考试试题、辅导员考试预测题、高校辅导员考试真题、辅导员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 72.心理发展的特点是()。 A.方向性与不可逆性 B.连续性与阶段性…

华为OD机试用java实现 -【删除重复数字后的最大数字】(2023-Q1 新题)

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:删除重复数字后的最大数字 题…