0
点赞
收藏
分享

微信扫一扫

时序预测 | MATLAB实现BiGRU双向门控循环单元时间序列预测


时序预测 | MATLAB实现BiGRU双向门控循环单元时间序列预测


目录

  • 时序预测 | MATLAB实现BiGRU双向门控循环单元时间序列预测
  • 预测效果
  • 基本介绍
  • 程序设计
  • 参考资料


预测效果

时序预测 | MATLAB实现BiGRU双向门控循环单元时间序列预测_时间序列


时序预测 | MATLAB实现BiGRU双向门控循环单元时间序列预测_双向门控循环单元_02

基本介绍

MATLAB实现BiGRU双向门控循环单元时间序列预测,运行环境Matlab2020b及以上。门控循环神经网络(gated recurrent neural network)的提出,正是为了更好地捕捉时间序列中时间步距离较大的依赖关系。它通过可以学习的门来控制信息的流动。其中,门控循环单元(gated recurrent unit,GRU)是一种常用的门控循环神经网络 。

程序设计

  • 完整源码和数据私信博主获取或同等价值程序兑换获取。

%% GRU 层设置,参数设置
inputSize = size(inputn,1);   %数据输入x的特征维度
outputSize = size(outputn,1);  %数据输出y的维度  
numhidden_units1=50;
numhidden_units2=300;
numhidden_units3=100;
%% gru
layers = [ ...
    sequenceInputLayer(inputSize)                 %输入层设置
    gruLayer(numhidden_units1,'name','hidden1')  %隐藏层学习层设置(cell层)
    dropoutLayer(0.2,'name','dropout_1')          %隐藏层权重丢失率,防止过拟合
    gruLayer(numhidden_units2,'Outputmode','sequence','name','hidden2')%隐藏层
    dropoutLayer(0.3,'name','dropout_2')          %隐藏层权重丢失率,防止过拟合
    gruLayer(numhidden_units3,'name','hidden3')  %隐藏层
    dropoutLayer(0.2,'name','dropout_3')          %隐藏层权重丢失率,防止过拟合
    fullyConnectedLayer(outputSize)               %全连接层设置(影响输出维度)(cell层出来的输出层) 
    regressionLayer('name','out')];               %回归层(因为预测值为连续值,所以为回归层) 
%% trainoption(gru)
opts = trainingOptions('adam', ...      %优化算法
    'MaxEpochs',800, ...                %遍历样本最大循环数
    'GradientThreshold',1,...           %梯度阈值
    'ExecutionEnvironment','cpu',...    %运算环境
    'InitialLearnRate',0.005, ...       %初始学习率
    'LearnRateSchedule','piecewise', ...% 学习率计划
    'LearnRateDropPeriod',160, ...      %epoch后学习率更新
    'LearnRateDropFactor',0.8, ...      %学习率衰减速度
    'Verbose',0, ...                    %命令控制台是否打印训练过程
    'Plots','training-progress'...      %打印训练进度
    );
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%% 网络训练
tic
net = trainNetwork(inputn,outputn,layers,opts);
% 滚动预测
toc;
[net,bn] = predictAndUpdateState(net,inputn);
outputnn=mapminmax('reverse',bn,outputps);

举报

相关推荐

0 条评论