基于LSTM的负荷预测,基于BILSTM的负荷预测,基于GRU的负荷预测,基于BIGRU的负荷预测,基于BP神经网络的负荷预测

目录
背影
摘要
代码和数据下载:基于LSTM的负荷预测,基于BILSTM的负荷预测,基于GRU的负荷预测,基于BIGRU的负荷预测,基于BP神经网络的负荷预测资源-CSDN文库 https://download.csdn.net/download/abc991835105/88768064
LSTM的基本定义
LSTM实现的步骤
GRU原理
bilstm
bigru
bp
结果分析
展望
参考论文

背影

路径坐标有一定的时间或者空间上的连续性,本文用LSTM进行预测

摘要

LSTM原理,BILSTM原理,GRU原理,BIGRU原理,BP神经网络原理,基于LSTM的负荷预测,基于BILSTM的负荷预测,基于GRU的负荷预测,基于BIGRU的负荷预测,基于BP神经网络的负荷预测

LSTM的基本定义

LSTM是一种含有LSTM区块(blocks)或其他的一种类神经网络,文献或其他资料中LSTM区块可能被描述成智能网络单元,因为它可以记忆不定时间长度的数值,区块中有一个gate能够决定input是否重要到能被记住及能不能被输出output。
图1底下是四个S函数单元,最左边函数依情况可能成为区块的input,右边三个会经过gate决定input是否能传入区块,左边第二个为input gate,如果这里产出近似于零,将把这里的值挡住,不会进到下一层。左边第三个是forget gate,当这产生值近似于零,将把区块里记住的值忘掉。第四个也就是最右边的input为output gate,他可以决定在区块记忆中的input是否能输出 。
图1 LSTM模型
图1 LSTM模型
LSTM有很多个版本,其中一个重要的版本是GRU(Gated Recurrent Unit),根据谷歌的测试表明,LSTM中最重要的是Forget gate,其次是Input gate,最次是Output gate

训练方法

为了最小化训练误差,梯度下降法(Gradient descent)如:应用时序性倒传递算法,可用来依据错误修改每次的权重。梯度下降法在递回神经网络(RNN)中主要的问题初次在1991年发现,就是误差梯度随着事件间的时间长度成指数般的消失。当设置了LSTM 区块时,误差也随着倒回计算,从output影响回input阶段的每一个gate,直到这个数值被过滤掉。因此正常的倒传递类神经是一个有效训练LSTM区块记住长时间数值的方法。

lstm的步骤

1 , LSTM的第一步是确定我们将从单元状态中丢弃哪些信息,这个策略有一个被称为遗忘门的sigmoid层决定。输入ht-1和xt遗忘门对应单元状态ct-1中每个数输出一个0到1之间的数字。1代表“完全保持”,0表示“完全遗忘”。

让那个我们回到我们的语言模型例子中尝试基于所有之前的词预测下一个词是什么。在这个问题中,单元状态中可能包括当前主题的性别,因此可以预测正确代词。当我们看到一个新的主题的性别时,我们想要忘记旧主题的性别。

=(W*[h-1,x]+b)

下一步将决定我们在单元状态中保存那些新信息。包括两个部分;第一”输入门层”的sigmoid层决定我们将更新那些值,第二,tanh层创建可以添加到状态的新候选值ct-1的向量。在下一步中,我们将结合这两个来创建状态更新。

在我们语言模型的例子中,我们想要将新主题的性别添加到单元格状态,以替换我们忘记的旧主题

=(W*[h-1,x]+b)

=tanh(W*[h-1,x]+b)

现在是时候将旧的单元状态ct-1更新为新的单元状态ct,之前的步骤已经决定要做什么,我们只需要实际做到这一点。我们将旧状态乘以ft,忘记我们之前决定忘记的事情,然后我们添加*Ct .这是新的候选值,根据我们的决定更新每个州的值来缩放。

在语言模型的情况下,我们实际上放弃了关于旧主题的性别的信息并添加新信息,正如我们在前面的步骤中所做的那样。

C=C-1+(1-)

最后,我们需要决定我们要输出的内容,此输出将基于我们的单元状态,但将是过滤版本,首先,我们运行一个sigmoid层,它决定我们要输出的单元状态的哪些部分,然后我们将单元状态设置为tanh(将值推到介于-1和1之间)并将其乘以sigmoid门的输出,以便我们只输出我们决定的部分。

对于语言模型示例,由于它只是看到一个主题,他可能想要输出与动物相关的信息,以防接下来会发生什么,例如,他输出主语是单数还是复数,一边我们知道动词应该与什么形式供轭。

O=(W[h-1,x]+b)

h=O*tanh©

GRU

由于LSTM中3个门控对提升其学习能力的贡献不同,因此略去贡献小的门控和其对应的权重,可以简化神经网络结构并提升其学习效率 [1]。GRU即是根据以上观念提出的算法,其对应的循环单元仅包含2个门控:更新门和复位门,其中复位门的功能与LSTM单元的输入门相近,更新门则同时实现了遗忘门和输出门的功能 [1] [27]。GRU的更新方式如下 [27]:

在这里插入图片描述式中符号含义参考LSTM,脚标 表示更新门和复位门。对比LSTM与GRU的更新规则可以发现,GRU的参数总量更小,且参数更新顺序与LSTM不同,GRU先更新状态再更新门控,因此当前时间步的状态使用前一个时间步的门控参数,LSTM先更新门控,并使用当前时间步的门控参数更新状态。GRU的2个门控不形成自循环,而是直接在系统状态间递归,因此其更新方程也不包含内部状态 。
LSTM和GRU有很多变体,包括在循环单元间共享更新门和复位门参数,以及对整个链式连接使用全局门控,但研究表明这些改进版本相比于标准算法未体现出明显优势,其可能原因是门控算法的表现主要取决于遗忘门,而上述变体和标准算法使用了的遗忘门机制相近 [62]。

BILSTM

在这里插入图片描述Bi-LSTM 的模型设计理念是使 t 时刻所获得特征数据同时拥有过去和将来之间的信息,实验证明,这种神经网络结构模型对文本特征提取效率和性能要优于单个 LSTM 结构模型。值得一提的是,Bi-LSTM 中的 2 个 LSTM 神经网络参数是相互独立的,它们只共享 word-embedding词向量列表

BIGRU

bigru神经网络是类似于bilstm神经网络,是有2 个 LSTM 神经网络参数是相互独立的,它们只共享 word-embedding词向量列表,来完成训练的

BP神经网络参数设置及各种函数选择

参数设置

1,最大迭代次数net.trainParam.epochs,一般先设置大,然后看训练收敛情况,如果提前收敛,最大迭代次数就改小,以到达训练目标为目的设置。
2,学习率net.trainParam.lr,一般设置0.01–0.5,数据越多,数据噪声越大,数据越难拟合,数值一般需要越小,设置太大,容易过早停止收敛。
3,学习目标net.trainParam.goal,根据训练测试的情况进行调整,过大容易过拟合,测试效果差,过小达不到想要的效果。

4,最大丢失次数net.trainParam.max_fail,既联系不收敛次数,达到这个次数后BP神经网络停止迭代,终止训练,主要目的是防止过拟合,太小容易过早停止迭代,太大容易过拟合,默认是6,需要依据训练测试情况和学习目标,妥协调整。
5,隐含层数,常见的是三个隐含层以内,再多也没有看到有明显的优势,数据好拟合,一个隐含层就足够,数据难拟合,更多层,收敛效果一般也没有明显改善。
6,隐含层神经元个数,按经验公式设置,试凑法调整。

训练函数

trainr 随机顺序递增更新训练函数

trainrp 带反弹的BP训练函数

trains 顺序递增BP训练函数

trainscg 量化连接梯度BP训练函数

trainbrBayes 规范化BP训练函数

trainc 循环顺序渐增训练函数

traincgb Powell-Beale连接梯度BP训练函数

traincgf Fletcher-Powell连接梯度BP训练函数

traincgp Polak-Ribiere连接梯度BP训练函数

traingda 自适应lrBP的梯度递减训练函数

traingdx 动量及自适应lrBP的梯度递减训练函数

trainlm Levenberg-Marquardt BP训练函数

trainoss 一步正切BP训练函数

传递函数:

logsig S型的对数函数

dlogsig logsig的导函数,有些MATALB版本不可用

tansig S型的正切函数

dtansig tansig的导函数,有些MATALB版本不可用

purelin 纯线性函数

dpurelin purelin的导函数,有些MATALB版本不可用

学习函数

learngdm 梯度下降栋梁学习函数

learngd 基于梯度下降法的学习函数

性能函数

mse 均方误差函数

msereg 均方误差规范化函数

显示函数

plotperf 绘制网络的性能

plotes 绘制一个单独神经元的误差曲面

plotep 绘制权值和阈值在误差曲面的位置

errsurf 计算单个神经元的误差曲面

前向网络创建函数

newffd 创建存在输入延迟的前向网络

newcf 创建级联前向网络

newff 创建前向BP网络

BP神经网络训练窗口详解

训练窗口例样

在这里插入图片描述

训练窗口详解

如根上图所示分为四个部分:   
1,Neural Network
    这里显示的是输入层神经元个数大小,中间层数量以及每层的神经元个数。

2,Algorithms
  Data Division:Random。这表示使用随机指数将目标分成三组,分别作为train,validation,test。
  Training:levenberg-Marquardt。这表示学习训练函数为trainlm。
  Performance:Mean Squared Error。这表示性能用均方误差来表示。
  Calculations: MEX。该网络保存为mex格式
3,Progress
  Epoch:该网络允许的迭代次数最大为500,实际迭代31次
  Time:运行时间。
  Performance:该网络的最大误差为1.96,目标误差为0.0001,实际误差为0.00475,可在Plots中的Performance中详细查看
  Gradient:该网络的最大梯度为1.83,阈值梯度为1e−7 1e^{-7}1e −7。
  Validation Checks:最大验证失败次数。(解释:比如默认是6,则系统判断这个验证集误差是否在连续6次检验后不下降,如果不下降或者甚至上升,说明training set训练的误差已经不再减小,没有更好的效果了,这时再训练就没必要了,就停止训练,不然可能陷入过拟合。)

4,Plots
  Performance:这里可以点进去,看train, validation和test的性能。
  在这里插入图片描述

Training State:记录Gradient和Validation Checks。
  在这里插入图片描述

Regression:通过绘制回归线来测量神经网络对应数据的拟合程度。
在这里插入图片描述
Plot Interval:训练窗口更新次数,等于10的时候,每迭代10次更新一次

​基于LSTM的负荷预测,基于BILSTM的负荷预测,基于GRU的负荷预测,基于BIGRU的负荷预测,基于BP神经网络的负荷预测

部分代码
clc
clear
close all
load maydata.mat
out=1;
m=3000;
n=randperm(length(num));
input_train =num((1:m),1:3 )‘;%
output_train = num(1:m,3+out)’;%
input_test = num(m+1:end,1:3)‘;%
output_test = num(m+1:end,3+out)’;%

[inputn,inputps]=mapminmax(input_train,-1,1);%训练数据的输入数据的归一化
[outputn,outputps]=mapminmax(output_train,-1,1);%训练数据的输出数据的归一化de
inputn_test=mapminmax(‘apply’,input_test,inputps);

pan=3;
%% Define Network Architecture
% Define the network architecture.
numFeatures = size(num(:,1:pan),2);%输入层维度
numResponses = size(num(:,end),2);%输出维度
% 200 hidden units
numHiddenUnits = 200;%第一层维度
% a fully connected layer of size 50 & a dropout layer with dropout probability 0.5
layers = [ …
sequenceInputLayer(numFeatures)%输入层
gruLayer(numHiddenUnits,‘OutputMode’,‘sequence’)%第一层
fullyConnectedLayer(100)%链接层
dropoutLayer(0.3)%遗忘层
fullyConnectedLayer(numResponses)%链接层
regressionLayer];%回归层

% Specify the training options.
% Train for 60 epochs with mini-batches of size 20 using the solver ‘adam’
maxEpochs = 80;%最大迭代次数
miniBatchSize = 1;%最小批量
% the learning rate == 0.01

% set the gradient threshold to 1
% set ‘Shuffle’ to 'never’every-epoch
options = trainingOptions(‘adam’, … %解算器
‘MaxEpochs’,maxEpochs, … %最大迭代次数
‘MiniBatchSize’,miniBatchSize, … %最小批次
‘InitialLearnRate’,0.001, … %初始学习率
‘GradientThreshold’,inf, … %梯度阈值
‘Shuffle’,‘every-epoch’, … %打乱顺序
‘Plots’,‘training-progress’,… %画图training-progress
‘Verbose’,1); %不输出训练过程

%% Train the Network
net = trainNetwork(inputn,outputn,layers,options);%开始训练

%% Test the Network
y_pred = predict(net,inputn_test,‘MiniBatchSize’,1)‘;%测试仿真输出
y_pred=(mapminmax(‘reverse’,y_pred,outputps))’; %反归一化
R2 = R_2(output_test,y_pred)
[MSE, RMSE, MBE, MAE ] =MSE_RMSE_MBE_MAE(output_test,y_pred)

error1 = y_pred’-output_test;%误差
figure
plot(y_pred,‘r-o’)
hold on
plot(output_test,‘k-*’)
hold on
ylabel(‘y’)
legend(‘gru预测值’,‘实际值’)
set(gca,‘fontsize’,12)

error1=y_pred-output_test;
figure
plot(error1,‘k-*’)
ylabel(‘误差’)
set(gca,‘fontsize’,12)

gruy_pred = y_pred;
gruerror = error1;
grup = [R2 MSE, RMSE, MBE, MAE];

save grudata.mat gruy_pred gruerror grup output_test

结果图

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

结果分析

从图中可以看出来,基于长短期神经网络LSTM的路径跟踪 ,预测准确,泛发性好

展望

长短期神经网络在处理有时间关联性的问题方面,拥有独特的优势,预测结果更平滑,稳定,并且可调参,LSTM可以和其他是算法结合,比如粒子群优化LSTM参数,DBN+LSTM,等

参考论文

百科

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

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

相关文章

leetcode 第三弹

链表声明: * Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(n…

操作系统-进程通信(共享存储 消息传递 管道通信 读写管道的条件)

文章目录 什么是进程通信为什么进程通信需要操作系统支持共享存储消息传递直接通信方式间接通信方式 管道通信小结注意 什么是进程通信 分享吃瓜文涉及到了进程通信 进程通信需要操作系统支持 为什么进程通信需要操作系统支持 进程不能访问非本进程的空间 当进程P和Q需要…

【学网攻】 第(5)节 -- Cisco VTP的使用

文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻】 第(2)节 -- 交换机认识及使用【学网攻】 第(3)节 -- 交换机配置聚合端口【学网攻】 第(4)节 -- 交换机划分Vlan 前言 网络已经成为了我们生活中不可或缺的一部分,它连接了世界各地的人们,让信息和资…

InitVerse:为云计算服务带来更高的透明度和可验证性

InitVerse:为云计算服务带来更高的透明度和可验证性 在云计算服务领域,透明度和可验证性是构建信任的关键要素。传统的云计算市场往往缺乏透明度,用户难以了解其数据和计算资源的实际使用情况。然而,通过利用区块链技术&#xff0…

简单快速取消AlertDialog的白色背景框,AlertDialog设置圆角背景

问题描述: 产品需求弹出的提示框是圆角,使用shape 设置圆角背景后,弹出的AlertDialog提示框四个角有白色的背景,据分析这个背景是 AlertDialog 父组件的背景色。 解决方法: 将Dialog的背景设置为透明色,代…

基于 Hologres+Flink 的曹操出行实时数仓建设

云布道师 曹操出行创立于 2015 年 5 月 21 日,是吉利控股集团布局“新能源汽车共享生态”的战略性投资业务,以“科技重塑绿色共享出行”为使命,将全球领先的互联网、车联网、自动驾驶技术以及新能源科技,创新应用于共享出行领域&…

【K8S 云原生】K8S的安全机制

目录 一、K8S安全机制概述 1、概念 2、请求apiserver资源的三个步骤: 一、认证:Anthentcation 1、认证的方式: 1、HTTP TOKEN: 2、http base: 3、http证书: 2、认证的访问类型: 3、签发…

Fluent Bit配置与使用——基于版本V2.2.2

Fluent Bit日志采集终端 文档适用版本:V2.2 1、日志文件处理流程 数据源是一个普通文件,其中包含 JSON 内容,使用tail插件记录日志,通过parsers进行格式化匹配(图里没写),通过两个筛选器&…

VR数字展厅,平面静态跨越到3D立体化时代

近些年,VR的概念被越来越多的人提起,较为常见的形式就是VR数字展厅。VR数字展厅的出现,让各地以及各行业的展厅展馆的呈现和宣传都发生了很大的改变和革新,同时也意味着展览传播的方式不再局限于原来的图文、视频,而是…

2024年新提出的算法:一种新的基于数学的优化算法——牛顿-拉夫森优化算法|Newton-Raphson-based optimizer,NRBO

1、简介 开发了一种新的元启发式算法——Newton-Raphson-Based优化器(NRBO)。NRBO受到Newton-Raphson方法的启发,它使用两个规则:Newton-Raphson搜索规则(NRSR)和Trap Avoidance算子(TAO&#…

花式沉默Defender

编者注:本文仅供学习研究,严禁从事非法活动,任何后果由使用者本人负责。 前言 总结了一下现在还能用的关闭Defender的方法,部分是原创,一部分借鉴的大佬。觉得字多的同学可以直接跳过思路查看步骤进行实操。 修改注册…

Git Docker 学习笔记

注意:该文章摘抄之百度,仅当做学习笔记供小白使用,若侵权请联系删除! 目录 列举工作中常用的几个git命令? 提交时发生冲突,你能解释冲突是如何产生的吗?你是如何解决的? git的4个…

腾讯云轻量应用Windows服务器如何搭建幻兽帕鲁Palworld私服?

幻兽帕鲁/Palworld是一款2024年Pocketpair开发的开放世界生存制作游戏,在帕鲁的世界,玩家可以选择与神奇的生物“帕鲁”一同享受悠闲的生活,也可以投身于与偷猎者进行生死搏斗的冒险。而帕鲁可以进行战斗、繁殖、协助玩家做农活,也…

如何阅读xml电子发票

xml电子发票是官方给出的电子存档的文件格式,本质是文本,所以文件很小,大量发票存储,能够更加凸显优势。 但是xml电子发票不方便阅读,因为里面是xml格式,对于财务人员来讲,看“代码”简直太难了…

C语言实现希尔排序算法(附带源代码)

希尔排序 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。 希尔排序是基于插入排序的以下两点性质而提出改进方法的: 插入排序在对几乎已经排好序的数据操作时,效率高&#xff0…

苹果笔记本MacBook电脑怎么卸载软件?三种方法快速卸载软件

苹果笔记本MacBook电脑是一款非常流行的电脑,但是有时候我们可能需要卸载一些不需要的软件。下面是一些简单的步骤,可以帮助您在MacBook电脑上卸载软件。 苹果笔记本MacBook电脑怎么卸载软件?三种实用方法快速卸载软件! 方法一&a…

Java强训day4(选择题编程题)

选择题 接口中的方法是为了让重写编程题 题目 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int a_b sc.nextInt();int b_c sc.nextInt();int ab sc.nextInt();int bc sc.nextInt();for(in…

【C++】入门

结束数据结构初阶的学习后,很高兴继续学习C,欢迎大家一起交流~ 目录 C关键字 命名空间 命名空间定义 命名空间使用 C输入&输出 缺省参数 缺省参数概念 缺省参数分类 函数重载 函数重载概念 C支持函数重载的原理--名字修饰 引用 引用概念…

选择排序(堆排序和topK问题)

选择排序 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完 。 如果我们用扑克牌来举例,那么选择排序就像是提前已经把所有牌都摸完了,而再进行牌…

Google Chrome RCE漏洞 CVE-2020-6507 和 CVE-2024-0517 流程分析

本文深入研究了两个在 Google Chrome 的 V8 JavaScript 引擎中发现的漏洞,分别是 CVE-2020-6507 和 CVE-2024-0517。这两个漏洞都涉及 V8 引擎的堆损坏问题,允许远程代码执行。通过EXP HTML部分的内存操作、垃圾回收等流程方式实施利用攻击。 CVE-2020-…