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

目录

摘要:

卷积神经网络(CNN)

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

CNN-LSTM网络构建:

具体实现流程:

 本文Matalb代码分享:


摘要:

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

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

卷积神经网络(CNN)

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

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

 长短期记忆神经网络(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(卷积神经网络-长短期记忆)的多输入分类任务实现——附代码_第2张图片

CNN-LSTM网络构建:

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

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

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

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

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

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

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

具体实现流程:

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

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

 可以看到,本文数据一共有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)训练网络

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

(6)测试网络

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

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

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

 本文Matalb代码分享:

你可能感兴趣的:(深度学习,深度学习,神经网络,cnn,lstm,分类)