原文链接:http://tecdat.cn/?p=19751

原文出处:拓端数据部落公众号

本示例说明如何使用长短期记忆(LSTM)网络对序列数据进行分类。

相关视频:LSTM神经网络架构和工作原理及其在Python中的预测应用

LSTM神经网络架构和原理及其在Python中的预测应用

要训​​练深度神经网络对序列数据进行分类,可以使用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("特征 "

准备填充数据

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

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

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

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

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

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 dimensions2   ''   BiLSTM                  BiLSTM with 100 hidden units3   ''   Fully Connected         9 fully connected layer4   ''   Softmax                 softmax5   ''   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

最受欢迎的见解

1.用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类

2.Python中利用长短期记忆模型LSTM进行时间序列预测分析 – 预测电力消耗数据

3.python在Keras中使用LSTM解决序列问题

4.Python中用PyTorch机器学习分类预测银行客户流失模型

5.R语言多元Copula GARCH 模型时间序列预测

6.在r语言中使用GAM(广义相加模型)进行电力负荷时间序列分析

7.R语言中ARMA,ARIMA(Box-Jenkins),SARIMA和ARIMAX模型用于预测时间序列数

8.R语言估计时变VAR模型时间序列的实证研究分析案例

9.用广义加性模型GAM进行时间序列分析

拓端tecdat|matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类相关推荐

  1. 忆阻器交叉开关阵列中的长短期记忆(LSTM)神经网络

    忆阻器交叉开关阵列中的长短期记忆(LSTM)神经网络 原文:Long short-term memory networks in memristor crossbar arrays 作者:CanLi. ...

  2. 理解长短期记忆(LSTM) 神经网络

    声明:本文翻译自colah的博客,原文地址:Understanding LSTM NETWORK 递归神经网络 人类并不是从混沌状态开始他们的思考.就像你读这篇文章时,你是建立在你之前对文字的理解上. ...

  3. 花书+吴恩达深度学习(十七)序列模型之长短期记忆 LSTM 和门控循环单元 GRU

    目录 0. 前言 1. 长短期记忆 LSTM 2. 门控循环单元 GRU 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~ 花书+吴恩达深度学习(十五)序列模型之循环神经网络 ...

  4. 长短期记忆人工神经网络(LSTM)网络学习资料

    一.人工神经网络模型的分类: 1.27种神经网络的图解 地址:https://baijiahao.baidu.com/s?id=1590362274035183205&wfr=spider&a ...

  5. LSTM 长短期记忆循环神经网络(学习笔记)

    LSTM 长短期记忆循环神经网络 1.LSTM 定义 LSTM 全称是Long Short Term Memory (长短期记忆),是RNN的一种. 基本一般情况下使用RNN都是使用LSTM,最基础的 ...

  6. 动手学PyTorch | (35) 长短期记忆(LSTM)

    本节将介绍另一种常⽤的⻔控循环神经网络:长短期记忆(long short-term memory,LSTM).它⽐⻔控循环单元的结构稍微复杂一点. 目录 1. 长短期记忆 2. 读取数据集 3. 从0 ...

  7. LSTM长短期记忆人工神经网络简述

    LSTM长短期记忆人工神经网络简述 By:Yang Liu 1.什么是LSTM 长短期记忆网络(LSTM,Long Short-Term Memory)是一种时间循环神经网络,是为了解决一般的RNN( ...

  8. torch学习 (三十二):周杰伦歌词数据集与长短期记忆 (LSTM)

    文章目录 1 引入 2 长短期记忆 2.1 输入门.遗忘门和输出门 2.2 候选记忆细胞 2.3 记忆细胞 2.4 隐藏状态 3 代码 致谢 1 引入   本文介绍一种常用的门控循环神经网络:长短期记 ...

  9. 拓端tecdat荣获掘金社区入驻新人奖

    2021年7月,由掘金发起了"入驻成长礼"颁奖活动.本次活动邀请到知名开发者.服务机构代表等业界人士. 据了解,掘金社区"新入驻创作者礼"主要对已经积累了一定历 ...

  10. 拓端tecdat荣获2022年度51CTO博主之星

    相信技术,传递价值,这是51CTO每一个技术创作者的动力与信念,2022 年度,拓端tecdat 作为新锐的数据分析咨询公司,在51CTO平台上,不断的输出优质的技术文章,分享前沿创新技术,输出最佳生 ...

最新文章

  1. 第02期 基础算法(Leetcode)刻意练习开营计划
  2. (转)一个as3写的减速效果
  3. DualCircleList
  4. 2022-01-12
  5. PHP中的short_open_tag
  6. 关闭 Windows Server 2008 用户权限控制(UAC)
  7. Android之Launcher分析和修改1——Launcher默认界面配置(default_workspace)
  8. Ubuntu 16.04 下octave的使用入门
  9. 怎么读取can报文_【案例】东风天龙“仪表未收到EECU报文”
  10. python文本框与数据库的关联_Python 基于python+mysql浅谈redis缓存设计与数据库关联数据处理...
  11. Python并行编程(七):多进程的基本使用和与多线程的差异
  12. 纯前端导出PDF分页截取问题处理
  13. 迅雷精简版 for Mac!附精简教程!
  14. 个人简历表格 个人简历word百度云 完整个人简历样本
  15. 加工中心三凌系统怎么用计算机,加工中心三菱系统的基本操作
  16. 基于LabView开发的串口助手
  17. 拍摄须知ISO、快门、光圈、曝光概念
  18. 全民免费wifi斗法中
  19. python小型登录系统_(Python)注册登录系统完整版
  20. c语言输出2~100以内所有的素数

热门文章

  1. CSS 3的display:盒类型详解
  2. C++的ORM 开源框架
  3. C# Frequently Asked Questions From The C# team
  4. 矩阵的特征值及特征向量理解
  5. C++--第17课 - 继承与多态 - 上
  6. 复化梯形公式求二重积分matlab源码
  7. 部署KMS激活后用户端一些情况的确认
  8. IE11 0x2ee4 bug 以及类似问题解决方法
  9. Meclipse乱码解决方案
  10. 我错了——虚拟光驱 for linux