基于GRU门控循环网络的时间序列预测matlab仿真,对比LSTM网络
1.算法运行效果图预览
LSTM:
GRU
2.算法运行软件版本
matlab2022a
3.算法理论概述
门控循环单元(Gated Recurrent Unit,简称GRU)是一种用于序列建模和预测的递归神经网络(RNN)变体。GRU通过引入门控机制,克服了传统RNN在处理长序列时的梯度消失问题,并在许多任务中取得了优异的性能。下面将详细介绍GRU的原理、数学公式以及其在时间序列预测中的应用。GRU是一种在长序列上具有较好表现的递归神经网络,通过门控机制有效地捕捉序列中的长距离依赖关系。与长短时记忆网络(LSTM)相比,GRU使用更少的门控单元,因此参数较少,更易于训练。
GRU的核心在于两个门控单元:重置门(Reset Gate)和更新门(Update Gate)。
重置门(r_trt)用于控制是否将过去的信息纳入当前状态的计算中。
更新门(z_tzt)用于控制过去状态和当前输入之间的权重。
GRU的状态更新公式如下:
GRU在时间序列预测中具有广泛应用,它可以根据过去的观测值来预测未来的值。通过对序列数据进行训练,GRU可以学习到数据中的模式和趋势,并用于预测时间序列的下一个步骤。例如,在股票价格预测、天气预测、自然语言处理等领域中,GRU被用来捕捉序列数据中的关键信息,从而进行准确的预测。
总结: GRU是一种门控循环神经网络,通过引入更新门和重置门的机制,有效地解决了传统RNN的梯度消失问题,能够捕捉序列数据中的长距离依赖关系。它在时间序列预测等任务中表现优异,为处理序列数据提供了强大的工具。
4.部分核心程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | %构建GRU网络模型 layers = [ ... sequenceInputLayer(N_feature) gruLayer(N_hidden) fullyConnectedLayer(N_Rpes) regressionLayer ]; % 定义训练选项 options = trainingOptions( 'adam' , ... 'MaxEpochs' ,250, ... 'GradientThreshold' ,1, ... 'InitialLearnRate' ,0.005, ... 'MiniBatchSize' ,50, ... 'LearnRateSchedule' , 'piecewise' , ... 'LearnRateDropPeriod' ,90, ... 'LearnRateDropFactor' ,0.2, ... 'Verbose' ,false, ... 'Plots' , 'training-progress' ); % 初始化RMSE、MAE和MAPE Rmse2 = []; Mae2 = []; Mape2 = []; XTestIp = TT(1:Num_dats+1); % 训练GRU网络模型 net = trainNetwork([XTrainIp(1: end -1);XTestIp(1: end -1)],XTestIp(2: end ),layers,options); % 使用训练好的模型进行预测 [net,YPred] = predictAndUpdateState(net,[XTrainIp( end );XTestIp( end )]); numTimeStepsTest = numel (YTestIp); for i = 2:numTimeStepsTest [net,YPred(:, i )] = predictAndUpdateState(net,[YTrainIp( i -1);YPred(:, i -1)], 'ExecutionEnvironment' , 'cpu' ); end % 对预测结果进行反归一化 YPred = (Vmax2-Vmin2)*YPred + Vmin2; YTest = YTestIp(1: end ); YTest = (Vmax2-Vmin2)*YTest + Vmin2; % 计算RMSE、MAE和MAPE Rmse2 = ( sqrt ( mean ((YPred-YTest).^2)))*100/( max (YTest)) Mae2 = mean ( abs (YPred-YTest)) Mape2 = mean ( abs ((YPred(YTest~=0)-YTest(YTest~=0)))./YTest(YTest~=0))*100 % 计算MAPE绝对误差 mape1 =((YPred(YTest~=0)-YTest(YTest~=0))./YTest(YTest~=0)); % 反归一化测试集输入数据 XTestIp = (Vmax2-Vmin2)*XTestIp + Vmin2; |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下