基于CNN-LSTM(卷积神经网络-长短期记忆)的多输入分类任务实现——附代码
创始人
2025-05-30 12:03:25
0

目录

摘要:

卷积神经网络(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代码分享:

相关内容

热门资讯

欧拉筛- 计数质数 给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。 示例 1: 输入:n = 10 输...
kali内置超好用的代理工具p... 作者:Eason_LYC 悲观者预言失败,十言九中。 乐观者创造奇迹&#...
linux语法复习-01天-用... 学习环境推荐使用VMware(搭建linux虚拟机) + XSh...
刘伦波,任上被查 据重庆市纪委监委5月30日消息:巴南区政府副区长、区公安分局局长刘伦波涉嫌严重违纪违法,目前正接受市...
拉什福德情定巴萨?4750万!... 拉什福德情定巴萨?4750万!曼联“放人”,亚马尔笑了! 最近这足球圈啊,可真是热闹非凡!那边厢姆巴...
青海省委:坚决拥护党中央决定 据《青海日报》,5月30日,青海省委书记吴晓军主持召开省委常委会会议,通报中央纪委国家监委关于给予马...
特朗普:美国仍然欢迎国际学生,... 美国总统特朗普在30日回答凤凰卫视记者提问时表示,美国仍然欢迎国际学生,只是不欢迎制造麻烦的学生。特...
酒驾遇查当场“吨吨吨”一瓶白酒... 2025年2月23日,福建福州。凌晨01:47分许,交警开展酒驾夜查时,一辆小车意图强行闯卡,遂采取...
IDEA 中启用 lombok IDEA中使用 lombok 有几个以下前提:1. IDEA 安装了 lombok 插...
栈和队列oj题自测 1.LeetCode225 用队列实现栈 解题思路: 此题可以用两个队列去实现一个栈...