时序预测 | MATLAB实现CNN-BiGRU-Attention时间序列预测

news2024/12/22 14:39:21

时序预测 | MATLAB实现CNN-BiGRU-Attention时间序列预测

目录

    • 时序预测 | MATLAB实现CNN-BiGRU-Attention时间序列预测
      • 预测效果
      • 基本介绍
      • 模型描述
      • 程序设计
      • 参考资料

预测效果

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

在这里插入图片描述

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

基本介绍

MATLAB实现CNN-BiGRU-Attention时间序列预测,CNN-BiGRU-Attention结合注意力机制时间序列预测。

模型描述

Matlab实现CNN-BiGRU-Attention时间序列预测
1.data为数据集,格式为excel,单变量时间序列预测;
2.CNN_BiGRU_AttentionTS.m为主程序文件,运行即可;
3.命令窗口输出R2、MAE、MAPE、MSE和MBE;
注意程序和数据放在一个文件夹,运行环境为Matlab2021b及以上。

注意程序和数据放在一个文件夹,运行环境为Matlab2021b及以上。
4.注意力机制模块:
SEBlock(Squeeze-and-Excitation Block)是一种聚焦于通道维度而提出一种新的结构单元,为模型添加了通道注意力机制,该机制通过添加各个特征通道的重要程度的权重,针对不同的任务增强或者抑制对应的通道,以此来提取有用的特征。该模块的内部操作流程如图,总体分为三步:首先是Squeeze 压缩操作,对空间维度的特征进行压缩,保持特征通道数量不变。融合全局信息即全局池化,并将每个二维特征通道转换为实数。实数计算公式如公式所示。该实数由k个通道得到的特征之和除以空间维度的值而得,空间维数为H*W。其次是Excitation激励操作,它由两层全连接层和Sigmoid函数组成。如公式所示,s为激励操作的输出,σ为激活函数sigmoid,W2和W1分别是两个完全连接层的相应参数,δ是激活函数ReLU,对特征先降维再升维。最后是Reweight操作,对之前的输入特征进行逐通道加权,完成原始特征在各通道上的重新分配。

1
2

程序设计

  • 完整程序和数据获取方式1:同等价值程序兑换;
  • 完整程序和数据获取方式2:私信博主回复MATLAB实现CNN-BiGRU-Attention时间序列预测获取。
 
        gruLayer(32,'OutputMode',"last",'Name','bil4','RecurrentWeightsInitializer','He','InputWeightsInitializer','He')
        dropoutLayer(0.25,'Name','drop2')
        % 全连接层
        fullyConnectedLayer(numResponses,'Name','fc')
        regressionLayer('Name','output')    ];

    layers = layerGraph(layers);
    layers = connectLayers(layers,'fold/miniBatchSize','unfold/miniBatchSize');
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%% 训练选项
if gpuDeviceCount>0
    mydevice = 'gpu';
else
    mydevice = 'cpu';
end
    options = trainingOptions('adam', ...
        'MaxEpochs',MaxEpochs, ...
        'MiniBatchSize',MiniBatchSize, ...
        'GradientThreshold',1, ...
        'InitialLearnRate',learningrate, ...
        'LearnRateSchedule','piecewise', ...
        'LearnRateDropPeriod',56, ...
        'LearnRateDropFactor',0.25, ...
        'L2Regularization',1e-3,...
        'GradientDecayFactor',0.95,...
        'Verbose',false, ...
        'Shuffle',"every-epoch",...
        'ExecutionEnvironment',mydevice,...
        'Plots','training-progress');
%% 模型训练
rng(0);
net = trainNetwork(XrTrain,YrTrain,layers,options);
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%% 测试数据预测
% 测试集预测
YPred = predict(net,XrTest,"ExecutionEnvironment",mydevice,"MiniBatchSize",numFeatures);
YPred = YPred';
% 数据反归一化
YPred = sig.*YPred + mu;
YTest = sig.*YTest + mu;
————————————————
版权声明:本文为CSDN博主「机器学习之心」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

参考资料

[1] http://t.csdn.cn/pCWSp
[2] https://download.csdn.net/download/kjm13182345320/87568090?spm=1001.2014.3001.5501
[3] https://blog.csdn.net/kjm13182345320/article/details/129433463?spm=1001.2014.3001.5501

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/861886.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java课题笔记~ Request请求

1.请求消息格式 客户端发送一个HTTP请求到服务器的请求消息包括以下格式: 请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。下图给出了请求报文的一般格式。 GET请求: POST请求&am…

每日一学——OSI参考模型

OSI参考模型(Open Systems Interconnection Reference Model)是国际标准化组织(ISO)制定的一个网络通信协议的概念框架。它将网络通信划分为七个层次,每个层次负责不同的功能和任务,从物理层到应用层依次为…

【ThreadPoolTaskSchedule】实现手动开启关闭定时任务

最近在公司呢,有一个需求,大概意思就是需要我去调用远程接口,但如果出现异常或者响应失败的时候,就需要开启重试机制,直到返回成功的响应为止。我很疑惑,按理说这种情况通常都应该有一个最大重试次数吗&…

python编程英语词汇大全app,python常用单词中英对照

大家好,小编为大家解答python编程英语词汇大全 知乎的问题。很多人还不知道python编程英语词汇大全app,现在让我们一起来看看吧! 第1天 editor[edtr]n. 编者,编辑;社论撰写人;编辑装置 setting[set]n. 环境…

《爬虫》爬取页面图片并保存

爬虫 前言代码效果 简单的爬取图片 前言 这几天打算整理与迁移一下博客。因为 CSDN 的 Markdown 编辑器很好用 ,所以全部文章与相关图片都保存在 CSDN。而且 CSDN 支持一键导出自己的文章为 markdown 文件。但导出的文件中图片的连接依旧是 url 连接。为了方便将图…

封装一个常用的Enum

前言 项目里面经常用到一些下拉框 尝试封装一个比较好用的Enum 文件目录 ├── utils.ts ├── index.txs └── package.josn代码 utils.ts class Enum {static keys: string[];static values: Enum[];/*** call this function after declare all staic enum variable*…

【效率提升-Perl脚本】根据Verilog文件自动生成tb文件

文章目录 Verilog端口文件(仅做示范用)对应的tb文件相应代码 在数字IC设计过程中,根据顶层生成testbench时存在很多重复性工作,因此为了提高工作效率,特地开发此脚本。 相应的python脚本见链接: 【效率提升…

跨境商城app源代码开发--Java、H5用户端

随着全球电子商务的快速发展,跨境贸易已经成为一种新的商业趋势。在这个背景下,开发一个跨境商城APP,提供一站式跨境贸易服务,具有非常重要的意义。本文将详细阐述使用Java和H5技术进行跨境商城APP用户端源代码开发的步骤。 一、…

帮源头厂家“跑市场、谈终端、拿订单” 郑州:找准发力点,入局“预制菜”

过去5年,国内预制菜行业大火,复合增速高达95%,全国相关企业逼近6万家,面对这盘万亿级的大棋,郑州近日终于出招了,而且,一出就是大招—— 经相关部门批准,位于郑东新区的“郑菜直供园…

学C的第三十三天【C语言文件操作】

相关代码gitee自取: C语言学习日记: 加油努力 (gitee.com) 接上期: 学C的第三十二天【动态内存管理】_高高的胖子的博客-CSDN博客 1 . 为什么要使用文件 以前面写的通讯录为例,当通讯录运行起来的时候,可以给通讯录中增加、删…

LeetCode 1572. 矩阵对角线元素的和

【LetMeFly】1572.矩阵对角线元素的和 力扣题目链接:https://leetcode.cn/problems/matrix-diagonal-sum/ 给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1&…

JDK1.8 jvisualvm远程连接linux服务器tomcat8

JDK1.8 jvisualvm远程连接linux服务器tomcat jvisualvm工具 1、 可以通过官网单独下载 2、 JDK安装的bin路径下Java VisualVM.exe应用程序打开软件截图 linux服务器上tomcat8配置 只需要修改tomcat8 bin目录下的catalina.sh文件在catalina.sh文件添加以下信息 注意IP地址为…

PPO和文本生成

策略梯度 策略梯度(Policy Gradient)方法梯度的计算如下: E ( a t , s t ) ∈ π θ [ A ^ t ∇ θ log ⁡ π θ ( a t ∣ s t ) ] \mathbb E_{(a_t,s_t) \in \pi_\theta}[\hat A_t \nabla_ \theta \log \pi_\theta(a_t | s_t)] E(at​,st…

了解IL汇编跳转语句

il代码, .assembly extern mscorlib {}.assembly Test{.ver 1:0:1:0}.module test.exe.method static void main() cil managed{.maxstack 5.entrypointldstr "Enter First Number"call void [mscorlib]System.Console::WriteLine (string)call string …

低代码平台 数据库字段值不重复

在开发过程中,要求表里某字段值唯一 一、场景 在单据,要求某字段值不重复 查看数据模型: 查看单据: 二、问题 区域编码,区域名称不重复 三、解决方案 1)数据库加索引 2)书写保存后存储过…

Python(七十八)字符串的常用操作——字符串大小写转换操作

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

推荐两本书《JavaRoadmap》、《JustCC》

《JavaRoadmap》 前言 本书的受众 如果你是一名有开发经验的程序员,对 Java 语言语法也有所了解,但是却一直觉得自己没有入门,那么希望这本书能帮你打通 Java 语言的任督二脉。 本书的定位 它不是一本大而全的书,而是一本打通、…

JDBC连接数据库及改造工具类

引入mysql驱动依赖,一般会建个lib包,如果是java web项目 一般将以来包创建在web->WEB-INF下, 这里我就随便了 建议 try {} catch (SQLException throwables) {throwables.printStackTrace(); }finally {} 的写法,这里就简写了 写个工具类 public class DBUtil {static{try…

C语言案例 完数求解-09

题目:编写一个程序找出1000以内的所有完数。 步骤一:定义程序目标 编写一个C程序,输出1000以内的所有完数 步骤二:程序设计 1.完数原理:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6 1 …

__attribute__ ((constructor))和__attribute__ ((destructor))用法

目录 1. 前言 2. __attribute__介绍 3. 测试代码 4. 总结 1. 前言 最近看代码,有个函数根本就没被任何函数调用,但从程序运行结果来看,该函数是被调用了的,找很久都没找到哪里调用了,最后发现该函数…