多维时序 | MATLAB实现WOA-CNN-GRU-Attention多变量时间序列预测(SE注意力机制)

多维时序 | MATLAB实现WOA-CNN-GRU-Attention多变量时间序列预测(SE注意力机制)

目录

    • 多维时序 | MATLAB实现WOA-CNN-GRU-Attention多变量时间序列预测(SE注意力机制)
      • 预测效果
      • 基本描述
      • 模型描述
      • 程序设计
      • 参考资料

预测效果

在这里插入图片描述

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

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

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

基本描述

1.Matlab实现WOA-CNN-GRU鲸鱼算法优化卷积门控循环单元多变量时间序列预测;
2.运行环境为Matlab2021b;
3…data为数据集,excel数据,输入多个特征,输出单个变量,考虑历史特征的影响,多变量时间序列预测,
main.m为主程序,运行即可,所有文件放在一个文件夹;
4.命令窗口输出R2、MSE、MAE、MAPE和MBE多指标评价;
5.鲸鱼算法优化学习率,隐藏层节点,正则化系数;

模型描述

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

1
2

程序设计

  • 完整程序和数据获取方式:私信博主回复MATLAB实现WOA-CNN-GRU-Attention多变量时间序列预测(SE注意力机制)
%%  优化算法参数设置
SearchAgents_no = 8;                   % 数量
Max_iteration = 5;                    % 最大迭代次数
dim = 3;                               % 优化参数个数
lb = [1e-3,10 1e-4];                 % 参数取值下界(学习率,隐藏层节点,正则化系数)
ub = [1e-2, 30,1e-1];                 % 参数取值上界(学习率,隐藏层节点,正则化系数)fitness = @(x)fical(x,num_dim,num_class,p_train,t_train,T_train);[Best_score,Best_pos,curve]=WOA(SearchAgents_no,Max_iteration,lb ,ub,dim,fitness)
Best_pos(1, 2) = round(Best_pos(1, 2));   
best_hd  = Best_pos(1, 2); % 最佳隐藏层节点数
best_lr= Best_pos(1, 1);% 最佳初始学习率
best_l2 = Best_pos(1, 3);% 最佳L2正则化系数%% 建立模型
lgraph = layerGraph();                                                   % 建立空白网络结构
tempLayers = [sequenceInputLayer([num_dim, 1, 1], "Name", "sequence")              % 建立输入层,输入数据结构为[num_dim, 1, 1]sequenceFoldingLayer("Name", "seqfold")];                            % 建立序列折叠层
lgraph = addLayers(lgraph, tempLayers);                                  % 将上述网络结构加入空白结构中
tempLayers = [convolution2dLayer([3, 1], 16, "Name", "conv_1", "Padding", "same")  % 建立卷积层,卷积核大小[3, 1]16个特征图reluLayer("Name", "relu_1")                                          % Relu 激活层lgraph = addLayers(lgraph, tempLayers);                                  % 将上述网络结构加入空白结构中tempLayers = [sequenceUnfoldingLayer("Name", "sequnfold")                      % 建立序列反折叠层flattenLayer("Name", "flatten")                                  % 网络铺平层fullyConnectedLayer(num_class, "Name", "fc")                                      % 分类层
lgraph = addLayers(lgraph, tempLayers);                              % 将上述网络结构加入空白结构中
lgraph = connectLayers(lgraph, "seqfold/out", "conv_1");             % 折叠层输出 连接 卷积层输入
lgraph = connectLayers(lgraph, "seqfold/miniBatchSize", "sequnfold/miniBatchSize"); % 折叠层输出连接反折叠层输入
lgraph = connectLayers(lgraph, "relu_2", "sequnfold/in");            % 激活层输出 连接 反折叠层输入%% 参数设置
options = trainingOptions('adam', ...     % Adam 梯度下降算法'MaxEpochs', 500,...                 % 最大训练次数 'InitialLearnRate', best_lr,...          % 初始学习率为0.001'L2Regularization', best_l2,...         % L2正则化参数'LearnRateSchedule', 'piecewise',...  % 学习率下降'LearnRateDropFactor', 0.1,...        % 学习率下降因子 0.1'LearnRateDropPeriod', 400,...        % 经过训练后 学习率为 0.001*0.1'Shuffle', 'every-epoch',...          % 每次训练打乱数据集'ValidationPatience', Inf,...         % 关闭验证'Plots', 'training-progress',...      % 画出曲线'Verbose', false);%% 训练
net = trainNetwork(p_train, t_train, lgraph, options);

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/129036772?spm=1001.2014.3001.5502
[2] https://blog.csdn.net/kjm13182345320/article/details/128690229

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

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

相关文章

stable diffusion和gpt4-free快速运行

这是一个快速搭建环境并运行的教程 stable diffusion快速运行gpt快速运行 包含已经搭建好的环境和指令,代码等运行所需。安装好系统必备anaconda、conda即可运行。 stable diffusion快速运行 github: AUTOMATIC1111/稳定扩散网络UI:稳定扩散网页用户界…

InnoDB的BufferPool

title: “InnoDB的BufferPool” createTime: 2022-03-06T15:52:4108:00 updateTime: 2022-03-06T15:52:4108:00 draft: false author: “ggball” tags: [“mysql”] categories: [“db”] description: “” InnoDB的BufferPool 为什么需要缓存? 因为存储引擎需…

Yarn的状态机框架分析

Yarn的状态机框架分析 什么是状态机 状态机(State Machine),是有限状态自动机的简称。简单解释:给定一个状态机,同时给定它的当前状态和输入,那么输出状态时可以明确的运算出来的。 yarn中的状态机 YARN将各种处理逻辑抽象成事…

Unity-Input System新输入系统插件学习

1.键盘、鼠标操作 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.InputSystem; using UnityEngine.UI;public class NewInputSystem : MonoBehaviour {public float SpaceKeyValue;public float RightMouseValue;public…

【每日一题】9.25 App测试和web测试有什么区别

“App 测试”和“Web 测试”是指软件测试的不同类型,每个都专注于软件开发的特定方面: 1. **App 测试(应用程序测试)**: - **平台**:这种类型的测试主要侧重于移动应用程序,包括为 iOS&#xf…

LaTex模板免费下载网站

LaTex模板免费下载网站 在进行文档排版时候,有时需要对不同类型文章的格式进行编辑,本博文推荐一个免费下载LaTex模板的网站。 一、网站地址 链接: LaTex模板网址:http://www.latextemplates.com/ 二、模板类型 模板类型如图2和图3所示。…

APACHE NIFI学习之—UpdateAttribute

UpdateAttribute 描述: 通过设置属性表达式来更新属性,也可以基于属性正则匹配来删除属性 标签: attributes, modification, update, delete, Attribute Expression Language, state, 属性, 修改, 更新, 删除, 表达式 参数: 如下列表中,必填参数则标识为加粗. 其他未加…

(PTA) 习题3-1 比较大小 (10分)

​ 本题要求将输入的任意3个整数从小到大输出。 输入格式: 输入在一行中给出3个整数&#xff0c;其间以空格分隔。 输出格式: 在一行中将3个整数从小到大输出&#xff0c;其间以“->”相连。 输入样例: 4 2 8输出样例: 2->4->8代码如下&#xff1a; #include<…

回归预测 | Matlab实现基于MIC-BP最大互信息系数数据特征选择算法结合BP神经网络的数据回归预测

回归预测 | Matlab实现基于MIC-BP最大互信息系数数据特征选择算法结合BP神经网络的数据回归预测 目录 回归预测 | Matlab实现基于MIC-BP最大互信息系数数据特征选择算法结合BP神经网络的数据回归预测效果一览基本介绍研究内容程序设计参考资料 效果一览 基本介绍 Matlab实现基于…

C++ 类的前置声明

最近在仿照muduo的网络库源代码写自己的网络服务器&#xff0c;当初想着整个项目分模块去写&#xff0c;最后再和主程序链接&#xff0c;正好升入理解一下编译链接的过程&#xff0c;但是现在发现每个模块的内容其实也不是很多&#xff0c;实际上没有必要分模块去写。然后在写的…

如何将48位立即数加载到ARM通用寄存器中?

安全之安全(security)博客目录导读 问题&#xff1a;如何将48位立即数加载到ARM通用寄存器中? AArch64执行状态中支持的指令集称为A64。所有A64指令的宽度都是32位。Move(宽立即数)被限制为16位立即数。 如果使用以下指令将一个48位的值赋给一个通用寄存器&#xff0c;会得到…

【EI会议征稿】第八届能源系统、电气与电力国际学术会议(ESEP 2023)

第八届能源系统、电气与电力国际学术会议&#xff08;ESEP 2023&#xff09; 2023 8th International Conference on Energy System, Electricity and Power 第八届能源系统、电气与电力国际学术会议&#xff08;ESEP 2023&#xff09;定于2023年11月24-26日在中国武汉隆重举…

【斯坦福cs324w】中译版 大模型学习笔记十 环境影响

环境影响 温室气体排放水足迹&#xff1a;数据中心使用水进行冷却&#xff1b;发电需要用水释放到环境中的化学物质很多是对人类有害的 如何计算数据中心能源消耗 简单表示形式 模型训练过程 参考资料 datawhale so-large-lm学习资料

PostGreSql中统计表中每天的数据,并统计每天的回复数,未回复数以及未回复占比(显示百分比)

前言 要在 PostgreSQL 中统计表中每天的数据&#xff0c;并统计每天的回复数、未回复数以及未回复占比&#xff0c;并以百分比形式显示&#xff0c;你可以使用以下 SQL 查询。假设你有一个名为 "messages" 的表&#xff0c;其中包含消息的时间戳列 "timestamp&…

【MySQL】如何配置复制拓扑?

前言配置大框架配置复制主服务器&#xff08;master&#xff09;配置复制从属服务器&#xff08;slave&#xff09;复制过滤规则感谢 &#x1f496; 前言 关于MySQL中的复制技术相关内容&#xff0c;可以看看这些文章&#xff1a; 【MySQL】MySQL中的复制技术是什么&#xff1…

英语——谐音篇——单词——单词密码

记忆即联结&#xff0c;只要能建立有效的联结&#xff0c;就能很好地记住。在现实生活中&#xff0c;声音的联结模式能很好地帮助我们记忆。几乎每个学生都曾用谐音的方法记忆一些事物&#xff0c;但很多人都没有意识到&#xff0c;我们每个人都可以通过一定的练习&#xff0c;…

超声波乳化具有什么特点(优点)?

梵英超声(fanyingsonic)探针式超声波乳化棒 超声波乳化是通过探针式超声波探头&#xff0c;高强度超声波耦合到液体中并产生声空化。超声波或声空化产生高剪切力&#xff0c;提供将大液滴破碎成纳米尺寸液滴所需的能量。梵英超声(fanyingsonic)提供各种探头式超声波乳化棒和配件…

skywalking 整合

安装sw docker 安装&#xff0c; compose 11800是外侧服务向skywaling投送数据的接口 12800是用来和web界面交互数据的接口 8080是ui界面商品 安装后&#xff0c;访问8080 怎么接入服务 下载 基于java的探针技术自动的上报指标数据&#xff0c;不用改源代码 要改下配置 后端…

与机器学习相比,人类的学习包括视觉、听觉、触觉、嗅觉、味觉的串并行混合学习...

视觉学习、听觉学习和触觉学习是人类感知和认知过程中的三个重要方面。 视觉学习&#xff1a;视觉学习是通过视觉感知信息进行学习和认知的过程。人类视觉系统能够感知并解读光线的反射或发射&#xff0c;从而获取关于物体、场景和环境的信息。视觉学习涉及识别、分类、空间感知…

Linux系统文件的三种time(atime/ctime/mtime)

使用Go操作文件&#xff0c;根据创建时间(或修改时间)进行不同处理。 在Mac上&#xff0c;文件相关的结构体字段在syscall/ztypes_darwin_arm64.go下的Stat_t: type Stat_t struct {Dev int32Mode uint16Nlink uint16Ino uint64Uid …