多维时序 | MATLAB实现GRU多变量时间序列预测

多维时序 | MATLAB实现GRU多变量时间序列预测

效果一览

1
2

3

4

基本介绍

本次运行测试环境MATLAB2020b,MATLAB实现GRU多变量时间序列预测,门控循环单元。GRU(Gate Recurrent Unit)是循环神经网络(Recurrent Neural Network, RNN)的一种。和LSTM(Long-Short Term Memory)一样,也是为了解决长期记忆和反向传播中的梯度等问题而提出来的。实际中很多序列的变化规律都会受到其他序列的影响,比如在研究居民的人均消费序列时,由于消费会受收入的影响,如果能把收入也纳入研究范围,就能得到更精确的消费模型,这就涉及多元时间序列分析。

程序设计

  • 完整程序私信博主。
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%% define the Deeper GRU networks
numFeatures= 1;%输入节点
numResponses = 1;%输出节点
numHiddenUnits = 500;%隐含层神经元节点数 
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%构建GRU网络 
layers = [sequenceInputLayer(numFeatures)
 gruLayer(numHiddenUnits) %GRU函数 
dropoutLayer(0.2)%丢弃层概率 
 reluLayer('name','relu')% 激励函数 RELU 
fullyConnectedLayer(numResponses)
regressionLayer];
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
XTrain=XTrain';
YTrain=YTrain';
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%% GRU结构参数 
options = trainingOptions('adam', ... % adam优化算法 自适应学习率 
'MaxEpochs',500,...% 最大迭代次数 
'MiniBatchSize',5, ...%最小批处理数量 
'GradientThreshold',1, ...%防止梯度爆炸 
'InitialLearnRate',0.005, ...% 初始学习率 
'LearnRateSchedule','piecewise', ...
 'LearnRateDropPeriod',125, ...%125次后 ,学习率下降 
'LearnRateDropFactor',0.2, ...%下降因子 0.2
'ValidationData',{XTrain,YTrain}, ...
 'ValidationFrequency',5, ...%每五步验证一次 
'Verbose',1, ...
 'Plots','training-progress');
%% 训练GRU网络 
net = trainNetwork(XTrain,YTrain,layers,options);
%% 测试样本标准化处理 
dataTestStandardized = (data_Test - mu) / sig;
XTest = dataTestStandardized(1:end-1,:)%测试输入 
YTest = data_Test(2:end,:);%测试输出 
————————————————
版权声明:本文为CSDN博主「机器学习之心」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------    

参考资料

[1] https://blog.csdn.net/kjm13182345320/category_10914353.html?spm=1001.2014.3001.5482
[2] https://blog.csdn.net/kjm13182345320/article/details/127601808

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器学习之心

谢谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值