关于数据挖掘:matlab使用长短期记忆LSTM神经网络对序列数据进行分类附代码数据

41次阅读

共计 3160 个字符,预计需要花费 8 分钟才能阅读完成。

全文下载链接: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 神经网络分类

正文完
 0