【GRU回归预测】卷积神经网络结合双向门控循环单元CNN-BiGRU数据预测(多输入单输出)【含Matlab源码 3903期】

在这里插入图片描述
✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

⛄一、卷积神经网络结合双向门控循环单元CNN-BiGRU数据预测

1 卷积神经网络
1.1 卷积神经网络各个层级结构图
在这里插入图片描述
上图中CNN要做的事情是:给定一张图片,是车还是马未知,是什么车也未知,现在需要模型判断这张图片里具体是一个什么东西,总之输出一个结果:如果是车 那是什么车

所以
最左边是数据输入层,对数据做一些处理,比如去均值(把输入数据各个维度都中心化为0,避免数据过多偏差,影响训练效果)、归一化(把所有的数据都归一到同样的范围)、PCA/白化等等。CNN只对训练集做“去均值”这一步。

中间是
CONV:卷积计算层,线性乘积 求和。
RELU:激励层,上文2.2节中有提到:ReLU是激活函数的一种。
POOL:池化层,简言之,即取区域平均或最大。

最右边是
FC:全连接层
这几个部分中,卷积计算层是CNN的核心,下文将重点阐述。

1.2 CNN之卷积计算层
1.2.1 CNN怎么进行识别
简言之,当我们给定一个"X"的图案,计算机怎么识别这个图案就是“X”呢?一个可能的办法就是计算机存储一张标准的“X”图案,然后把需要识别的未知图案跟标准"X"图案进行比对,如果二者一致,则判定未知图案即是一个"X"图案。

而且即便未知图案可能有一些平移或稍稍变形,依然能辨别出它是一个X图案。如此,CNN是把未知图案和标准X图案一个局部一个局部的对比,如下图所示
在这里插入图片描述
而未知图案的局部和标准X图案的局部一个一个比对时的计算过程,便是卷积操作。卷积计算结果为1表示匹配,否则不匹配。

具体而言,为了确定一幅图像是包含有"X"还是"O",相当于我们需要判断它是否含有"X"或者"O",并且假设必须两者选其一,不是"X"就是"O"。
在这里插入图片描述
理想的情况就像下面这个样子:
在这里插入图片描述
标准的"X"和"O",字母位于图像的正中央,并且比例合适,无变形

对于计算机来说,只要图像稍稍有一点变化,不是标准的,那么要解决这个问题还是不是那么容易的:
在这里插入图片描述
计算机要解决上面这个问题,一个比较天真的做法就是先保存一张"X"和"O"的标准图像(就像前面给出的例子),然后将其他的新给出的图像来和这两张标准图像进行对比,看看到底和哪一张图更匹配,就判断为哪个字母。

但是这么做的话,其实是非常不可靠的,因为计算机还是比较死板的。在计算机的“视觉”中,一幅图看起来就像是一个二维的像素数组(可以想象成一个棋盘),每一个位置对应一个数字。在我们这个例子当中,像素值"1"代表白色,像素值"-1"代表黑色。
在这里插入图片描述
当比较两幅图的时候,如果有任何一个像素值不匹配,那么这两幅图就不匹配,至少对于计算机来说是这样的。

对于这个例子,计算机认为上述两幅图中的白色像素除了中间的3*3的小方格里面是相同的,其他四个角上都不同:
在这里插入图片描述
因此,从表面上看,计算机判别右边那幅图不是"X",两幅图不同,得出结论:
在这里插入图片描述
但是这么做,显得太不合理了。理想的情况下,我们希望,对于那些仅仅只是做了一些像平移,缩放,旋转,微变形等简单变换的图像,计算机仍然能够识别出图中的"X"和"O"。就像下面这些情况,我们希望计算机依然能够很快并且很准的识别出来:
在这里插入图片描述
这也就是CNN出现所要解决的问题。

Features
在这里插入图片描述
对于CNN来说,它是一块一块地来进行比对。它拿来比对的这个“小块”我们称之为Features(特征)。在两幅图中大致相同的位置找到一些粗糙的特征进行匹配,CNN能够更好的看到两幅图的相似性,相比起传统的整幅图逐一比对的方法。

每一个feature就像是一个小图(就是一个比较小的有值的二维数组)。不同的Feature匹配图像中不同的特征。在字母"X"的例子中,那些由对角线和交叉线组成的features基本上能够识别出大多数"X"所具有的重要特征。
在这里插入图片描述
这些features很有可能就是匹配任何含有字母"X"的图中字母X的四个角和它的中心。那么具体到底是怎么匹配的呢?如下:
在这里插入图片描述
看到这里是不是有了一点头目呢。但其实这只是第一步,你知道了这些Features是怎么在原图上面进行匹配的。但是你还不知道在这里面究竟进行的是怎样的数学计算,比如这个下面3*3的小块到底干了什么?
在这里插入图片描述
这里面的数学操作,就是我们常说的“卷积”操作。接下来,我们来了解下什么是卷积操作。

1.2.2 什么是卷积
对图像(不同的数据窗口数据)和滤波矩阵(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的『卷积』操作,也是卷积神经网络的名字来源。

非严格意义上来讲,下图中红框框起来的部分便可以理解为一个滤波器,即带着一组固定权重的神经元。多个滤波器叠加便成了卷积层。

2 双向门控循环单元
在学术界已经提出了许多方法来解决这类问题。 其中最早的方法是”长短期记忆”(long-short-term memory,LSTM) (Hochreiter and Schmidhuber, 1997), 我们将在下一次讨论。 门控循环单元(gated recurrent unit,GRU) (Cho et al., 2014) 是一个稍微简化的变体,通常能够提供同等的效果, 并且计算 (Chung et al., 2014)的速度明显更快。 由于门控循环单元更简单,我们从它开始解读。

2.1 门控隐状态
门控循环单元与普通的循环神经网络之间的关键区别在于: 前者支持隐状态的门控。 这意味着模型有专门的机制来确定应该何时更新隐状态, 以及应该何时重置隐状态。 这些机制是可学习的,并且能够解决了上面列出的问题。 例如,如果第一个词元非常重要, 模型将学会在第一次观测之后不更新隐状态。 同样,模型也可以学会跳过不相关的临时观测。 最后,模型还将学会在需要的时候重置隐状态。 下面我们将详细讨论各类门控。

2.1.1重置门和更新门
我们首先介绍重置门(reset gate)和更新门(update gate)。 我们把它们设计成(0,1)区间中的向量, 这样我们就可以进行凸组合。 重置门允许我们控制“可能还想记住”的过去状态的数量; 更新门将允许我们控制新状态中有多少个是旧状态的副本。

我们从构造这些门控开始。 图描述了门控循环单元中的重置门和更新门的输入, 输入是由当前时间步的输入和前一时间步的隐状态给出。 两个门的输出是由使用sigmoid激活函数的两个全连接层给出。
在这里插入图片描述
2.1.2 候选隐状态
2.1.3 隐状态
这些设计可以帮助我们处理循环神经网络中的梯度消失问题, 并更好地捕获时间步距离很长的序列的依赖关系。 例如,如果整个子序列的所有时间步的更新门都接近于1, 则无论序列的长度如何,在序列起始时间步的旧隐状态都将很容易保留并传递到序列结束。
总之,门控循环单元具有以下两个显著特征:
重置门有助于捕获序列中的短期依赖关系;
更新门有助于捕获序列中的长期依赖关系。

3 卷积神经网络结合双向门控循环单元CNN-BiGRU
卷积神经网络结合双向门控循环单元(CNN-BiGRU)是一种深度学习模型,用于处理序列数据。它结合了卷积神经网络(CNN)和双向门控循环单元(BiGRU)的特性,以提取序列数据中的空间和时间特征。

首先,让我们了解一下卷积神经网络(CNN)。CNN是一种广泛应用于图像处理和计算机视觉任务的神经网络模型。它通过卷积层、池化层和全连接层来提取图像中的特征。卷积层使用卷积操作来捕捉图像中的局部特征,池化层则用于降低特征图的维度。这些层的组合可以有效地提取图像中的空间特征。

另一方面,双向门控循环单元(BiGRU)是一种循环神经网络(RNN)的变体。RNN是一种适用于序列数据的神经网络模型,它通过在每个时间步骤上传递隐藏状态来捕捉序列中的时间依赖关系。然而,传统的RNN在处理长序列时容易出现梯度消失或梯度爆炸的问题。为了解决这个问题,门控循环单元(GRU)引入了门控机制,可以选择性地更新和遗忘隐藏状态中的信息。双向门控循环单元(BiGRU)则在时间上正向和反向两个方向上运行两个独立的GRU,以捕捉序列中的前后依赖关系。

将CNN和BiGRU结合起来,可以充分利用CNN对空间特征的提取能力和BiGRU对时间依赖关系的建模能力。具体来说,CNN用于提取输入序列中的局部空间特征,然后将特征图作为BiGRU的输入。BiGRU通过正向和反向两个方向上的GRU层来学习序列中的前后依赖关系。最后,可以使用全连接层或其他分类器对BiGRU的输出进行分类或回归。

通过结合CNN和BiGRU,CNN-BiGRU模型可以更好地处理序列数据,尤其是在自然语言处理(NLP)任务中表现出色。它可以捕捉到序列数据中的空间和时间特征,从而提高模型的性能。

⛄二、部分源代码

%% CNN-GRU多变量回归预测
%% 加载数据与数据集划分
clc;clear;close all
data = xlsread(‘data.xlsx’, ‘Sheet1’, ‘A3:M1250’);
% 输入数据
input =data(:,1:12)‘;
output=data(:,13)’;
nwhole =size(data,1);
% 打乱数据集
% temp=randperm(nwhole);
% 不打乱数据集
temp=1:nwhole;
train_ratio=0.9;
ntrain=round(nwhole*train_ratio);
ntest =nwhole-ntrain;
% 准备输入和输出训练数据
input_train =input(:,temp(1:ntrain));
output_train=output(:,temp(1:ntrain));
% 准备测试数据
input_test =input(:, temp(ntrain+1:ntrain+ntest));
output_test=output(:,temp(ntrain+1:ntrain+ntest));
%% 数据归一化
method=@mapminmax;
[inputn_train,inputps]=method(input_train);
inputn_test=method(‘apply’,input_test,inputps);
[outputn_train,outputps]=method(output_train);
outputn_test=method(‘apply’,output_test,outputps);
% 创建元胞或向量,长度为训练集大小;
XrTrain = cell(size(inputn_train,2),1);
YrTrain = zeros(size(outputn_train,2),1);
for i=1:size(inputn_train,2)
XrTrain{i,1} = inputn_train(:,i);
YrTrain(i,1) = outputn_train(:,i);
end
% 创建元胞或向量,长度为测试集大小;
XrTest = cell(size(inputn_test,2),1);
YrTest = zeros(size(outputn_test,2),1);
for i=1:size(input_test,2)
XrTest{i,1} = inputn_test(:,i);
YrTest(i,1) = outputn_test(:,i);
end

⛄三、运行结果

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

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]张立峰,刘 旭.基于 CNN-GRU 神经网络的短期负荷预测[J].电力科学与工 程. 2020年11月

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

  • 22
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Matlab领域

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值