首页 > 其他分享 >matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类|附代码数据

matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类|附代码数据

时间:2023-12-19 19:55:22浏览次数:40  
标签:预测 分类 长短期 神经网络 matlab 序列 LSTM 数据

全文下载链接:http://tecdat.cn/?p=19751

本示例说明如何使用长短期记忆(LSTM)网络对序列数据进行分类 。 最近我们被客户要求撰写关于LSTM的研究报告,包括一些图形和统计输出。

要训练深度神经网络对序列数据进行分类,可以使用LSTM网络。LSTM网络使您可以将序列数据输入网络,并根据序列数据的各个时间步进行预测。

本示例使用日语元音数据集。此示例训练LSTM网络来识别给定时间序列数据的说话者,该时间序列数据表示连续讲话的两个日语元音。训练数据包含九位发言人的时间序列数据。每个序列具有12个特征,并且长度不同。数据集包含270个训练观察和370个测试观察。

加载序列数据

加载日语元音训练数据。 XTrain 是包含长度可变的维度12的270个序列的单元阵列。 Y 是标签“ 1”,“ 2”,...,“ 9”的分类向量,分别对应于九个扬声器。中的条目  XTrain 是具有12行(每个要素一行)和不同列数(每个时间步长一列)的矩阵。

   
XTrain(1:5)
ans=5×1 cell array
    {12x20 double}
    {12x26 double}
    {12x22 double}
    {12x20 double}
    {12x21 double}

可视化图中的第一个时间序列。每行对应一个特征。

   
figure
plot(Train')
xlabel("时间步长")
title("训练样本 1")
numFeatures = size(XTrain{1},1);
legend("特征 "

图片


点击标题查阅往期内容

图片

R语言用FNN-LSTM假近邻长短期记忆人工神经网络模型进行时间序列深度学习预测4个案例

左右滑动查看更多

01

图片

02

图片

03

图片

04

图片

准备填充数据

在训练过程中,默认情况下,该软件默认将训练数据分成小批并填充序列,以使它们具有相同的长度。太多的填充可能会对网络性能产生负面影响。

为防止训练过程增加太多填充,您可以按序列长度对训练数据进行排序,并选择小批量的大小,以使小批量中的序列具有相似的长度。下图显示了对数据进行排序之前和之后的填充序列的效果。

图片

获取每个观察的序列长度。

按序列长度对数据进行排序。

在条形图中查看排序的序列长度。

   
figure
bar(sequenceLengths)
ylim([0 30])
xlabel("序列")
ylabel("长度")
title("排序后数据")

图片

选择大小为27的小批量可均匀划分训练数据并减少小批量中的数量。下图说明了添加到序列中的填充量。

图片

定义LSTM网络架构

定义LSTM网络体系结构。将输入大小指定为大小为12的序列(输入数据的大小)。指定具有100个隐藏单元的双向LSTM层,并输出序列的最后一个元素。最后,通过包括大小为9的完全连接层,其后是softmax层和分类层,来指定九个类。

如果可以在预测时使用完整序列,则可以在网络中使用双向LSTM层。双向LSTM层在每个时间步都从完整序列中学习。例如,如果您无法在预测时使用整个序列,比如一次预测一个时间步长时,请改用LSTM层。

   
layers = 
  5x1 Layer array with layers:
     1   ''   Sequence Input          Sequence input with 12 dimensions
     2   ''   BiLSTM                  BiLSTM with 100 hidden units
     3   ''   Fully Connected         9 fully connected layer
     4   ''   Softmax                 softmax
     5   ''   Classification Output   crossentropyex

现在,指定训练选项。将优化器指定为  'adam',将梯度阈值指定为1,将最大历元数指定为100。要减少小批量中的填充量,请选择27的小批量大小。与最长序列的长度相同,请将序列长度指定为  'longest'。为确保数据仍按序列长度排序,请指定从不对数据进行随机排序。

由于批处理的序列短,因此训练更适合于CPU。指定  'ExecutionEnvironment' 为  'cpu'。要在GPU上进行训练(如果有),请将设置  'ExecutionEnvironment' 为  'auto' (这是默认值)。

训练LSTM网络

使用指定的训练选项来训练LSTM网络  trainNetwork

图片

测试LSTM网络

加载测试集并将序列分类为扬声器。

加载日语元音测试数据。 XTest 是包含370个长度可变的维度12的序列的单元阵列。 YTest 是标签“ 1”,“ 2”,...“ 9”的分类向量,分别对应于九个扬声器。

   
XTest(1:3)
ans=3×1 cell array
    {12x19 double}
    {12x17 double}
    {12x19 double}

LSTM网络  net 是使用相似长度的序列进行训练的。确保测试数据的组织方式相同。按序列长度对测试数据进行排序。

分类测试数据。要减少分类过程引入的数据量,请将批量大小设置为27。要应用与训练数据相同的填充,请将序列长度指定为  'longest'

计算预测的分类准确性。

   
acc = sum(YPred == YTest)./numel(YTest)
acc = 0.9730

图片

点击文末 “阅读原文”

获取全文完整代码数据资料。

本文选自《matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类》。

点击标题查阅往期内容

Python TensorFlow循环神经网络RNN-LSTM神经网络预测股票市场价格时间序列和MSE评估准确性
数据分享|PYTHON用KERAS的LSTM神经网络进行时间序列预测天然气价格例子
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析
Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类
RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测
结合新冠疫情COVID-19股票价格预测:ARIMA,KNN和神经网络时间序列分析
深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据
用PyTorch机器学习神经网络分类预测银行客户流失模型
PYTHON用LSTM长短期记忆神经网络的参数优化方法预测时间序列洗发水销售数据
Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化
Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析
R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告
R语言深度学习:用keras神经网络回归模型预测时间序列数据
Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类
R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)
MATLAB中用BP神经网络预测人体脂肪百分比数据
Python中用PyTorch机器学习神经网络分类预测银行客户流失模型
R语言实现CNN(卷积神经网络)模型进行回归数据分析
SAS使用鸢尾花(iris)数据集训练人工神经网络(ANN)模型
【视频】R语言实现CNN(卷积神经网络)模型进行回归数据分析
Python使用神经网络进行简单文本分类
R语言用神经网络改进Nelson-Siegel模型拟合收益率曲线分析
R语言基于递归神经网络RNN的温度时间序列预测
R语言神经网络模型预测车辆数量时间序列
R语言中的BP神经网络模型分析学生成绩
matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类
R语言实现拟合神经网络预测和结果可视化
用R语言实现神经网络预测股票实例
使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测
python用于NLP的seq2seq模型实例:用Keras实现神经网络机器翻译
用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类

标签:预测,分类,长短期,神经网络,matlab,序列,LSTM,数据
From: https://www.cnblogs.com/tecdat/p/17914567.html

相关文章

  • MATLAB常用日期和时间函数
    在MATLAB中得到系统当前日期、时间也是经常用到的内容,由以下函数实现。1.生成指定格式日期和时间datestr-生成指定格式日期和时间,是字符型变量。>> datestr(now) %其中now是获取当前日期和时间ans=    30-Dec-200916:05:16其中输出格式可由用户指定,共有31种格式,以下是......
  • Matlab文件操作
    1、 Matlab文件操作主要有三个步骤:首先打开文件,然后对文件进行读写操作,最后要关闭文件。2、 fid=fopen(文件名,打开方式)'r'只读,文件必须存在(缺省的打开方式)'w'写文件,若文件已存在则原内容将被覆盖;若文件不存在则新建一个'a'在文件末尾添加,文件若不存......
  • 写一个MATLAB脚本删除一个.m文件的所有注释和空行,输出到一个新.m文件,文件名加上_modif
    请注意,这个脚本仅处理了最简单的情况,真正的Matlab代码可能包含更复杂的结构,如多行字符串、嵌套的字符串、转义字符等,处理这些情况可能需要更复杂的逻辑。%Specifytheinput.mfilenameinputFileName='originalScript.m';outputFileName=[inputFileName(1:end-2)'_modi......
  • Matlab常用小技巧及部分快捷键
    Matlab常用小技巧一:1.m文件如果是函数,保存的文件名最好与函数名一致,这点都很清楚。不过容易疏忽的是,m文件名的命名尽量不要是简单的英文单词,最好是由大小写英文/数字/下划线等组成。原因是简单的单词命名容易与matlab内部函数名同名,结果会出现一些莫名其妙的错误。例如,写个m文件......
  • Matlab-三维视图的自动旋转
    %figure%plot3(...);%xlabel('X轴');%ylabel('Y轴');%zlabel('Z轴');%title('标题');%gridon%打开网格%%fori=1:2:360%%view(a,b):a是角度,b是仰视角%view(i,20);%pause(0.06);%end例子,show_3D.m:clearall;closeall......
  • python调用matlab
    官网链接:https://ww2.mathworks.cn/help/matlab/matlab_external/call-user-script-and-function-from-python.html?lang=enhttps://ww2.mathworks.cn/help/matlab/matlab_external/install-the-matlab-engine-for-python.html安装用于 Python 的 MATLAB 引擎API要在Pyt......
  • 用MATLAB实现遗传算法程序
    用MATLAB实现遗传算法程序/B2F.m , 658用MATLAB实现遗传算法程序/changes.m , 959用MATLAB实现遗传算法程序/cross.m , 1155用MATLAB实现遗传算法程序/de2bi.m , 1048用MATLAB实现遗传算法程序/F2B.m , 540用MATLAB实现遗传算法程序/f553.m , 538用MATLAB实现遗传算法......
  • 基于深度学习网络的疲劳驾驶检测算法matlab仿真
    1.算法运行效果图预览  2.算法运行软件版本matlab2022a 3.算法理论概述3.1疲劳检测理论概述      疲劳检测的原理是根据人体疲劳状态下的特征检测,和正常状态下的特征检测做对比。在做疲劳检测之前,首先需要分析人体在疲劳状态下与正常状态下的特征有哪些不......
  • 多尺度retinex图像去雾算法matlab仿真
    1.算法运行效果图预览 2.算法运行软件版本matlab2022a 3.算法理论概述      多尺度Retinex(MSR)图像去雾算法是一种基于Retinex理论的去雾算法。该算法通过在大、中、小三个尺度上计算图像的反射分量,并对其进行加权平均,从而消除雾气对图像的影响,提高图像的可视度......
  • Matlab 读取父文件下子文件夹内容
    1functionResizeImageofData2%读取文件夹下的所有数据3Files=dir('D:\1\');%父文件夹4LengthFiles=length(Files);5oldFolder=cd;%打开当前工作目录6spath=strcat(oldFolder,'\Data\');%在工程目录下创建名为'\Data\'的新文件夹78if~exis......