深度学习--Matlab使用LSTM长短期记忆网络对负荷进行预测

一、LSTM描述

长短期记忆网络(LSTM,Long Short-Term Memory)是一种时间循环神经网络,是为了解决一般的RNN(循环神经网络)存在的长期依赖问题而专门设计出来的,所有的RNN都具有一种重复神经网络模块的链式形式。在标准RNN中,这个重复的结构模块只有一个非常简单的结构,例如一个tanh层。[概念参考:百度百科]

LSTM网络结构如下图:[图片来源:OPEN-OPEN]

单个LSTM主要包括以下四个步骤。

(1)遗忘门

(2)更新输入信息

(3)更新网络状态

 

(4)网络输出信息

更详细的分析,此处不再描述,本文着重实现和解决问题。

 

二、问题描述

已有一个月的电力负荷数据,该负荷数据为每15分钟一个数据点,要求通过对该数据进行学习,对未来的负荷数据进行预测。

采用单向LSTM长短期记忆网络进行深度学习,采用MATLAB平台实现。

 

三、MATLAB实现

3.1 加载原始数据

原始数据需要构建为行向量,即时间序列值。

%%
%加载数据,重构为行向量
datayears = load('RPD_data.mat');
datayears = datayears.Prpd;
data = datayears(length(datayears)-96*(31):end);
data = data';%很多人问我这个datayears是什么,这里解释一下,以上代码是加载数据
%把你的负荷数据赋值给data变量就可以了。
%data是行向量。要是还不明白,就留言吧。figure
plot(data)
xlabel("Days")
ylabel("Loads")
title("Daily load")

运行结果如下:

3.2 数据预处理

%%
%序列的前 90% 用于训练,后 10% 用于测试
numTimeStepsTrain = floor(0.9*numel(data));
dataTrain = data(1:numTimeStepsTrain+1);
dataTest = data(numTimeStepsTrain+1:end);%数据预处理,将训练数据标准化为具有零均值和单位方差。
mu = mean(dataTrain);
sig = std(dataTrain);
dataTrainStandardized = (dataTrain - mu) / sig;%输入LSTM的时间序列交替一个时间步
XTrain = dataTrainStandardized(1:end-1);
YTrain = dataTrainStandardized(2:end);

3.3 创建LSTM网络

%%
%创建LSTM回归网络,指定LSTM层的隐含单元个数96*3
%序列预测,因此,输入一维,输出一维
numFeatures = 1;
numResponses = 1;
numHiddenUnits = 96*3;layers = [ ...sequenceInputLayer(numFeatures)lstmLayer(numHiddenUnits)fullyConnectedLayer(numResponses)regressionLayer];%指定训练选项,求解器设置为adam, 250 轮训练。
%梯度阈值设置为 1。指定初始学习率 0.005,在 125 轮训练后通过乘以因子 0.2 来降低学习率。
options = trainingOptions('adam', ...'MaxEpochs',250, ...'GradientThreshold',1, ...'InitialLearnRate',0.005, ...'LearnRateSchedule','piecewise', ...'LearnRateDropPeriod',125, ...'LearnRateDropFactor',0.2, ...'Verbose',0, ...'Plots','training-progress');
%训练LSTM
net = trainNetwork(XTrain,YTrain,layers,options);

3.4 预测数据

!!!!这里补充一下很多人说没有看到的XTest YTest:

dataTestStandardized = (dataTest - mu) / sig;
XTest = dataTestStandardized(1:end-1);
YTest = dataTest(2:end);

这里采用上一时刻的观测值来预测下一时刻的预测值。

net = resetState(net);
net = predictAndUpdateState(net,XTrain);YPred = [];
numTimeStepsTest = numel(XTest);
for i = 1:numTimeStepsTest[net,YPred(:,i)] = predictAndUpdateState(net,XTest(:,i),'ExecutionEnvironment','cpu');
end%使用先前计算的参数对预测去标准化。
YPred = sig*YPred + mu;%计算均方根误差 (RMSE)。
rmse = sqrt(mean((YPred-YTest).^2))

3.5 查看预测结果

%将预测值与测试数据进行比较。
figure
subplot(2,1,1)
plot(YTest)
hold on
plot(YPred,'.-')
hold off
legend(["Observed" "Predicted"])
ylabel("Loads")
title("Forecast with Updates")subplot(2,1,2)
stem(YPred - YTest)
xlabel("Days")
ylabel("Error")
title("RMSE = " + rmse)figure
subplot(2,1,1)
plot(dataTrain(1:end-1))
hold on
idx = numTimeStepsTrain:(numTimeStepsTrain+numTimeStepsTest);
plot(idx,[data(numTimeStepsTrain) YPred],'.-')
hold off
xlabel("Days")
ylabel("Loads")
title("Forecast")
legend(["Observed" "Forecast"])
subplot(2,1,2)
plot(data)
xlabel("Days")
ylabel("Loads")
title("Daily load")

可以看到预测效果非常的好。

其他:

深度学习--Matlab使用LSTM长短期记忆网络对负荷进行分类

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/405501.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机桌面怎么全屏显示,电脑显示器如何设置成满屏

在有些时候我们的网友不清楚电脑显示器如何设置成满屏,那么下面就由学习啦小编来给你们说说电脑显示器设置成满屏的方法吧,希望可以帮到你们哦!电脑显示器设置成满屏的方法:右击桌面,选择弹出对话框中的【屏幕分辨率】如下图。弹出…

“优势”三说

故事1 朋友的朋友,极具预言天赋。留学国外多年,精通英语、日语、法语、德语、西班牙语,甚至对阿拉伯语和俄语也颇有造诣。做了若干年海外游子之后,看到祖国的日新月异,毅然决定回国发展。他自己认为,就凭着…

Matlab中求数据概率分布的方法

一、问题描述 对已有的一些列数据进行分析,想得到该数据的分布和统计特性,如概率密度函数,概率分布,累计概率密度等等。 例如,已有一段时间的声音测量数据,求该数据的分布特性,并给出噪声的95…

gvim同时处理中日韩文

From: http://xbeta.info/gvim-unicode.htm 一、两项要点 gvim处理多国文字(unicode)有两项要点:一是编码环境:set encutf-8;二是正确的字体,比如要正确显示韩文可选择GulimChe、DotumChe字体。 上图中9-12行字符未能正常显示&a…

获取浏览器可视区域、屏幕的宽和高

document.documentElement.clientWidth:取得浏览器页面可视区域的宽度document.documentElement.clientHeight:取得浏览器页面可视区域的高度screen.width:取得屏幕宽度screen.height:取得屏幕高度screen.availWidth:取…

matlab设置plot图像尺寸大小、坐标轴等

Matlab作为工程中的数据可视化工具是非常的方便的。但是在具体的生成过程中通常会遇见以下几个比较常见的问题,这里以我最近在写论文中用图遇到的问题作为例子。简要说明输出图像大小位置规范的重要性。 1:colorbar的位置大小范围不一致、不合理 2&#…

Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1 (ISO)

Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1 (ISO) http://www.microsoft.com/downloads/en/details.aspx?FamilyID71deb800-c591-4f97-a900-bea146e4fae1&displaylangen转载于:https://www.cnblogs.com/joshuali/archive/2011/03/22/4339226.html

计算机基础知识excle,职称计算机基础知识:Excel工作表的复制

(1)在工作簿内部复制1)鼠标拖曳法将鼠标指针指向被复制的工作表标签,按下Ctrl键,按下鼠标,此时鼠标指针变成内含“十”字形的表的图标,同时旁边的黑色倒三角用以指示工作表的复制位置。沿着标签区域拖动鼠标到达复制点后释放鼠标&…

Makefile中 变量赋值含义

From: http://hi.baidu.com/linuxking/item/aab87527ac88550a76272c91 作者联系方式&#xff1a;李先静 <xianjimli at hotmail dot com> 在Makefile中&#xff0c;对变量的赋值&#xff0c;有好几种方式&#xff0c;它们的意义、使用的场合都各不相同&#xff0c;初…

Matlab中设置图形窗口的大小、字体、axis等

快捷键 首先要了解的是Matlab是面向对象的。最高等级的对象是screen&#xff0c;它定义了figure可以用的最大szie。screen下面是figure。figue就是你画图的时候跳出来的那个新的对话窗口。如果figure变化&#xff0c;screen是不会跟着变化的。但screen变化的话&#xff0c;fig…

南开大学计算机科学与技术考研真题,2016年南开大学计算机科学与技术考研考试科目-考研参考书-考研真题.pdf...

2016年南开大学计算机科学与技术考研考试科目-考研参考书-考研真题研究方指导专业研究 拟招生专业 考试科目向 教师方向备注 人数计算机综①101思想政合基础含&#xff1a;081200 01并行 治理论②201数据结构计算机 与分布 Y101M7 英语一③301​ 75分、计算科学与 体系结 5 数学…

MMN实用架构过程概览

MMN&#xff08;Macro-Micro-Nano&#xff0c;即宏观-微观-纳米&#xff09;实用架构过程初步体现了我的架构观&#xff1a;即以实用主义态度把握架构原则与本质思想&#xff0c;从系统的各个层次剖析架构&#xff0c;提供一个具有指导意义和实施价值的架构过程&#xff0c;采取…

实践分享:开始用Cordova+Ionic+AngularJS开发App

http://www.cocoachina.com/webapp/20150707/12395.html 本文是一篇关于我本人在使用CordovaIonic以及AngularJS开发移动App的过程中的经验的总结&#xff0c;它不是一篇基础入门教程&#xff0c;而是和大家探讨一下关于如何更好的使用这些技术开发一个更好的App。 声明&#x…

git仓库的基本用法

一、简介 git是一个免费的、开源的分布式版本控制系统&#xff0c;可以快速高效地处理从小型到大型的项目。git很容易学习&#xff0c;而且它的占用资源很小&#xff0c;性能也非常好。它超越了subversion、cvs、perforce和clearcase等scm工具&#xff0c;具有廉价的本地分支、…

React开发(249):react项目理解 ant design form加个扩展样式

<Form.Item label"详细地址&#xff1a;" wrapperCol{{ xs: { span: 14 },sm: { span: 14 } }}>{getFieldDecorator(address, {initialValue: type update? activeUpdateData.address : ,rules: [{ message: 请输入详细地址}],})(<Input.TextArea autoSiz…

重庆邮电计算机科学分数线,2020重庆邮电大学录取分数线已公布

重庆邮电大学录取分数线已经陆续出现&#xff0c;下面由出国留学网小编为你精心准备了“2020重庆邮电大学录取分数线已公布”&#xff0c;持续关注本站将可以持续获取高考资讯&#xff01;2020重庆邮电大学录取分数线已公布很多家长和考生们都想知道2020年重庆邮电大学的高考分…

系统集成资质 -考点分析- “三点估算法”出题的形式演化分析

以上内容分析“时间管理”中常考的计算题以及计算题演化的形式。 知识点1&#xff1a;三点估算法 常规考法1&#xff1a;完成活动A悲观估计36天&#xff0c;最可能估计21天&#xff0c;乐观估计6天&#xff0c;求该活动的期望完成时间。 点评&#xff1a;最早考核的形式&#x…