一、LSTM简介

1997年,Hochreiter和Schmidhuber一起提出长短期记忆神经网络,即LSTM神经网络。LSTM神经网络很好地解决了RNN中存在的梯度消失和梯度爆炸问题。与RNN相比,它可以记忆更长时间步上的信息。2013年,Graves等对LSTM神经网络进行了改进,并将其应用到语音识别中。如今LSTM神经网络日益发展成熟,其基本结构如图1所示。

图1 LSTM神经网络基本结构
图1中,带箭头的线条表示向量的传输,箭头指引向量的传输方向。箭头交汇处的小圆圈表示向量按位进行相应运算,处于中央位置的大圆圈(ct)表示LSTM神经网络的细胞状态单元。合并的线条表示不同向量的连接,分开的线条则表示向量被复制后向不同方向传输。由图1可知,LSTM神经网络表现为三种门结构:输入门(it)、输出门(ot)和遗忘门(ft)。输入门主要作用是控制进入当前细胞状态单元的信息量,输出门则主要控制当前细胞状态单元输出的信息量,遗忘门主要作用是控制并丢弃当前细胞状态单元不需要的来自上一个细胞状态单元的信息。通过输入门、输出门和遗忘门,LSTM神经网络得以保持和更新细胞单元状态。

LSTM神经网络信息传递的基本流程如下(仅以一个神经网络节点为例进行阐述):(1)遗忘门通过sigmoid函数对输入信息进行控制,决定哪些信息可以进入到当前细胞状态单元中;(2)由tanh层生成一个可添加到当前细胞状态单元中的候选值,之后将该候选值、上一步的输入信息和上一时刻的细胞单元状态按位进行运算,获得新的细胞单元状态值;(3)通过sigmoid函数获得初始输出信息后,再利用tanh层把新的细胞单元状态值进行处理,使其在-1到1之间,最后把初始输出信息和处理后的细胞单元状态值按位进行运算并输出。

LSTM神经网络信息传递过程中涉及的公式如下:
it=σ(Wxixt+Whiht-1+bi) (1)
ft=σ(Wxfxt+Whfht-1+bf) (2)
ot=σ(Wxoxt+Whoht-1+bo) (3)
ct=ft×ct-1+it×tanh(Wxcxt+Whcht-1+bc) (4)
ht=ot×tanh(ct) (5)
式(1)中it表示输入门中,上一时刻隐含层的输出值和当前时刻的输入值经过sigmoid函数处理后的值;式(2)中ft表示遗忘门中,上一时刻隐含层的输出值和当前时刻的输入值经过sigmoid函数处理后的值;式(3)中ot表示输出门中,上一时刻隐含层的输出值和当前时刻的输入值经过sigmoid函数处理后的值;式(4)中ct表示当前时刻更新之后的细胞单元状态值;式(5)中ht表示当前时刻隐含层的输出值。在式(1)~式(5)中,σ和tanh为循环激活函数,ht-1表示上一时刻隐含层的输出值,xt表示当前时刻的输入值,W表示不同的权重矩阵,b表示不同的偏置参数。

LSTM神经网络的这种特殊结构使它不仅可以对时间序列数据进行长期预测,还可以进行短期预测并取得了不错的效果。

二、部分源代码


clear all;
clc;
%% 数据加载,并归一化处理
[train_data,test_data]=LSTM_data_process();
data_length=size(train_data,1);
data_num=size(train_data,2);
%% 网络参数初始化
% 结点数设置
input_num=12;
cell_num=18;
output_num=4;
% 网络中门的偏置
bias_input_gate=rand(1,cell_num);
bias_forget_gate=rand(1,cell_num);
bias_output_gate=rand(1,cell_num);
% ab=1.2;
% bias_input_gate=ones(1,cell_num)/ab;
% bias_forget_gate=ones(1,cell_num)/ab;
% bias_output_gate=ones(1,cell_num)/ab;

三、运行结果


四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]周品.MATLAB 神经网络设计与应用[M].清华大学出版社,2013.
[4]陈明.MATLAB神经网络原理与实例精解[M].清华大学出版社,2013.
[5]潘少伟,李辉,王亚玲,蔡文斌.LSTM神经网络原油价格预测[J].计算机技术与发展. 2021,31(05)

【数据预测】基于matlab LSTM神经网络空调能耗数据预测【含Matlab源码 051期】相关推荐

  1. 【Matlab树叶分类】BP神经网络植物叶片分类【含GUI源码 916期】

    一.代码运行视频(哔哩哔哩) [Matlab树叶分类]BP神经网络植物叶片分类[含GUI源码 916期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅 ...

  2. 【Matlab语音处理】声音信号频谱分析仪【含GUI源码 325期】

    一.代码运行视频(哔哩哔哩) [Matlab语音处理]声音信号频谱分析仪[含GUI源码 325期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊, ...

  3. 【Matlab图像检索】综合特征图像检索【含GUI源码 395期】

    一.代码运行视频(哔哩哔哩) [Matlab图像检索]综合特征图像检索[含GUI源码 395期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  4. 【Matlab肌电信号】肌电信号处理【含GUI源码 966期】

    一.代码运行视频(哔哩哔哩) [Matlab肌电信号]肌电信号处理[含GUI源码 966期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余继周,杨 ...

  5. 【Matlab条形码识别】二维条形码识别【含GUI源码 607期】

    一.代码运行视频(哔哩哔哩) [Matlab条形码识别]二维条形码识别[含GUI源码 607期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  6. 基于双向BiLstm神经网络的中文分词详解及源码

    基于双向BiLstm神经网络的中文分词详解及源码 基于双向BiLstm神经网络的中文分词详解及源码 1 标注序列 2 训练网络 3 Viterbi算法求解最优路径 4 keras代码讲解 最后 源代码 ...

  7. 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  8. 【Matlab电力负荷预测】粒子群优化支持向量机短期电力负荷预测【含GUI源码 751期】

    一.代码运行视频(哔哩哔哩) [Matlab电力负荷预测]粒子群优化支持向量机短期电力负荷预测[含GUI源码 751期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 ...

  9. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  10. 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...

最新文章

  1. 智能家居成新热点 市场化进程遇瓶颈
  2. 下列关于python字典变量的定义中错误的是_python练习题-day14
  3. shell中的命令替换和变量替换
  4. python可以从事什么工作-学完Python能从事哪些工作?
  5. 驳Linux不娱乐 堪比Win平台中十款播放器
  6. C语言 realloc函数 带着内存游走的函数
  7. 31 | 深度和广度优先搜索:如何找出社交网络中的三度好友关系?
  8. java 指定时间转换_Java中使用Calendar进行获取指定时间,使用SimpleDateFormat进行格式化转换...
  9. 北航博士,研究所月入两万,是一种什么体验?
  10. mysql not regexp_Mysql必知必会——使用正则表达式搜索(REGEXP)
  11. js实现的万年历显示
  12. 双目立体匹配算法:ELAS
  13. 命题作文:在一棵IPv4地址树中彻底理解IP路由表的各种查找过程
  14. cad怎么画立体图形教学_怎么在CAD中绘制三维立体图
  15. 滤波器原理及其作用计算机网络,什么是滤波器?滤波器原理及其作用是什么?...
  16. 计算机四级等级考试必备知识点总结
  17. 2020年国考行测错题集(省级)
  18. 金海佳学C++primer 练习9.4/9.5
  19. 【Python量化】如何监测领涨板块,挖掘题材龙头股?
  20. AcWing 1月9日每日一题 2058. 笨拙的手指

热门文章

  1. ASA防火墙SSL ×××配置
  2. 如何简单的理解TDD与DDT
  3. ZOJ 1914 Arctic Network
  4. C语言中scanf()的用法
  5. EXTJS学习笔记:grid之分组实现groupingview
  6. Convolutional Neural Networks (CNNs / ConvNets)
  7. 20200619每日一句
  8. 20200614每日一句
  9. 20190914每日一句
  10. 190123每日一句