当前位置: 首页 > news >正文

回归预测 | Matlab实现WOA-CNN-LSTM-Attention鲸鱼算法优化卷积长短期记忆网络注意力多变量回归预测(SE注意力机制)

回归预测 | Matlab实现WOA-CNN-LSTM-Attention鲸鱼算法优化卷积长短期记忆网络注意力多变量回归预测(SE注意力机制)

目录

    • 回归预测 | Matlab实现WOA-CNN-LSTM-Attention鲸鱼算法优化卷积长短期记忆网络注意力多变量回归预测(SE注意力机制)
      • 预测效果
      • 基本描述
      • 模型描述
      • 程序设计
      • 参考资料

预测效果

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

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

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

基本描述

1.Matlab实现WOA-CNN-LSTM-Attention鲸鱼算法优化卷积长短期记忆网络注意力多变量回归预测(SE注意力机制)(SE注意力机制);
2.运行环境为Matlab2021b;
3.data为数据集,excel数据,输入多个特征,输出单个变量,多变量回归预测,
main.m为主程序,运行即可,所有文件放在一个文件夹;
4.命令窗口输出R2、MSE、MAE、MAPE多指标评价;
5.鲸鱼优化学习率,隐藏层节点,正则化系数;

模型描述

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

1
2

程序设计

  • 完整程序和数据获取方式资源处直接下载:Matlab实现WOA-CNN-LSTM-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")                                          
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"); %% 参数设置
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

相关文章:

  • Linux项目自动化构建工具之make/Makefile演示gcc编译
  • [MFC] MFC消息机制的补充
  • 网络安全-端口扫描和服务识别的几种方式
  • 2.3作业
  • QT 范例阅读:系统托盘 The System Tray Icon example
  • React useEffect使用
  • eCos flash模拟EEPROM实现NV系统
  • 高亮显示不一致
  • 【Docker与微服务】基础篇
  • centos7安装google chrome和chromium
  • ArcGIS Pro 按照字段进行融合或拆分
  • 一文讲透ast.literal_eval() eval() json.loads()
  • docker手动迁移镜像
  • mysql 锁知识汇总
  • 2024年:用OKR管理你的生活
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • avalon2.2的VM生成过程
  • echarts的各种常用效果展示
  • Flex布局到底解决了什么问题
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • 浮动相关
  • 今年的LC3大会没了?
  • 类orAPI - 收藏集 - 掘金
  • 聊聊sentinel的DegradeSlot
  • 你不可错过的前端面试题(一)
  • 七牛云假注销小指南
  • 详解移动APP与web APP的区别
  • 原生Ajax
  • No resource identifier found for attribute,RxJava之zip操作符
  • Nginx实现动静分离
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​iOS实时查看App运行日志
  • #Linux(make工具和makefile文件以及makefile语法)
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (转)IOS中获取各种文件的目录路径的方法
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • *1 计算机基础和操作系统基础及几大协议
  • .mysql secret在哪_MySQL如何使用索引
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .NET 读取 JSON格式的数据
  • .net生成的类,跨工程调用显示注释
  • .NET学习全景图
  • .pyc文件是什么?
  • @angular/cli项目构建--Dynamic.Form
  • [ NOI 2001 ] 食物链
  • [1159]adb判断手机屏幕状态并点亮屏幕
  • [C++打怪升级]--学习总目录
  • [dfs搜索寻找矩阵中最长递减序列]魔法森林的秘密路径
  • [error] 17755#0: *58522 readv() failed (104: Connection reset by peer) while reading upstream
  • [Flutter]WindowsPlatform上运行遇到的问题总结