多维时序 | MATLAB实现CNN-GRU多变量时间序列预测
基本介绍
本次运行测试环境MATLAB2020b,MATLAB实现CNN-GRU多变量时间序列预测,卷积门控循环单元。
模型特点
- CNN和GRU网络是深度学习中两种常见的网络。与浅层学习相比,深度学习能够实现数据的逐层转换,保证了最有效的特征表达和信息提取。
- CNN对输入数据进行逐层卷积和池化操作。卷积层是CNN 的核心,它利用局部连接和权值共享对输入进行卷积操作,提取数据的深层特征。
- 池化层通过一定的池化规则对卷积层的输出执行池化操作,保留主要特征,同时减少参数数目和计算量,防止过拟合。
- CNN 的特点是能够提取数据中的隐藏特征,并将其逐层结合,生成抽象的高层特征。然而,CNN不具备记忆功能,缺乏对时序数据时间相关性的考虑。
- RNN在学习长期依赖关系时存在梯度消失和爆炸等常见问题,为了解决这一问题,Hochreiter 等人提出了LSTM神经网络,其引入了3 个“选通单元”:输入门、遗忘门和输出门。Cho 等人将LSTM神经网络的输入门和遗忘门合并为更新门,构建了更易于计算和实现的GRU神经网络。
- GRU 神经网络是一种时间递归神经网络,能够充分反映时间序列数据的长期历史过程。GRU神经网络在处理后续输入数据时,可以将先前输入所携带的信息保存在网络中。
程序设计
- 完整程序和数据下载:MATLAB实现CNN-GRU多变量时间序列预测
% CONV -> ReLU -> MAXPOOL -> FC -> DROPOUT -> FC -> SOFTMAX
layers = [ ...
sequenceInputLayer(inputSize)
convolution1dLayer(5,100,'Padding',2,'Stride', 1) % 卷积层 1
batchNormalizationLayer;
reluLayer(); % ReLU 层 1
convolution1dLayer(5,70,'Padding',2,'Stride', 1); % 卷积层 2
batchNormalizationLayer;
maxPooling1dLayer(1,'Stride',1); % 最大池化 池化层 1
convolution1dLayer(3,50,'Padding',1,'Stride', 1); % 卷积层 3
reluLayer(); % ReLU 层 3
maxPooling1dLayer(1,'Stride',1);
convolution1dLayer(3,40,'Padding',1,'Stride', 1); % 卷积层 4
reluLayer(); % ReLU 层 2
maxPooling1dLayer(1,'Stride',1); % 最大池化 池化层 1
fullyConnectedLayer(1,'Name','fc1')
regressionLayer]
options = trainingOptions('adam',...
'InitialLearnRate',1e-3,...% 学习率
'MiniBatchSize', batchSize, ...
'MaxEpochs',numEpochs);
[net,info1] = trainNetwork(input_train,output_train,layers,options);
- 相关预测
学习总结
CNN-GRU 模型中需要手动设置的参数主要包括卷积层层数、卷积核个数、GRU层层数、GRU层神经元个数和优化学习算法。卷积层层数和卷积核个数体现了CNN从数据中提取特征的能力,GRU层层数和GRU层神经元个数则反映了GRU神经网络从数据中学习时间依赖关系的能力。
参考资料
[1] https://blog.csdn.net/kjm13182345320/article/details/127515229?spm=1001.2014.3001.5502
[2] https://blog.csdn.net/kjm13182345320/article/details/127993418?spm=1001.2014.3001.5502