分类预测 | MATLAB实现SSA-CNN-LSTM-Attention数据分类预测(SE注意力机制)

分类预测 | MATLAB实现SSA-CNN-LSTM-Attention数据分类预测(SE注意力机制)

目录

    • 分类预测 | MATLAB实现SSA-CNN-LSTM-Attention数据分类预测(SE注意力机制)
      • 分类效果
      • 基本描述
      • 模型描述
      • 程序设计
      • 参考资料

分类效果

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

在这里插入图片描述

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

基本描述

1.MATLAB实现SSA-CNN-LSTM-Attention数据分类预测,运行环境Matlab2021b及以上;
2.基于麻雀优化算法(SSA)、卷积神经网络(CNN)和长短期记忆网络(LSTM)、SE注意力机制的数据分类预测程序;
3.多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用;SSA优化算法优化学习率、卷积核大小、神经元个数,这3个关键参数,以测试集精度最高为目标函数。
程序语言为matlab,程序可出分类效果图,迭代优化图,混淆矩阵图;
4.data为数据集,输入12个特征,分四类;main为主程序,其余为函数文件,无需运行,可在下载区获取数据和程序内容。
5.适用领域:适用于各种数据分类场景,如滚动轴承故障、变压器油气故障、电力系统输电线路故障区域、绝缘子、配网、电能质量扰动,等领域的识别、诊断和分类。
使用便捷:直接使用EXCEL表格导入数据,无需大幅修改程序。内部有详细注释,易于理解。

模型描述

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

1
2

程序设计

  • 完整程序和数据获取方式:私信博主回复MATLAB实现SSA-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]=SSA(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")                                  % 网络铺平层bilstmLayer(best_hd, "Name", "bilstm", "OutputMode","last")              % BiLSTM层fullyConnectedLayer(num_class, "Name", "fc")                     % 全连接层softmaxLayer("Name", "softmax")                                  % softmax激活层classificationLayer("Name", "classification")];                  % 分类层
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

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

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

相关文章

【MySQL】视图、函数、存储过程优缺点

文章目录 1. 概述2. 视图2.1 优点2.2 缺点 3. 存储过程与存储函数3.1 优点3.2 缺点 1. 概述 因为视图、函数、存储过程的使用一般具有使用少或具备争议的特点,所以该章主要记录对应的优缺点,需要使用时需结合业务谨慎评估是否使用 2. 视图 一个或者多…

Tomcat设置IP黑名单和白名单server.xml

方式一&#xff1a; -- 只允许192.168.1.2和192.168.2.3 <Context path"" docBase"xxxAdmin" debug"0" reloadable"true" ><Valve className"org.apache.catalina.valves.RemoteAddrValve" allow"192.168.1.…

用 pytorch 训练端对端验证码识别神经网络并进行 C++ 移植

文章目录 前言安装安装 pytorch安装 libtorch安装 opencv&#xff08;C&#xff09; 准备数据集获取训练数据下载标定 编码预分析 数据集封装格式 神经网络搭建神经网络训练神经网络测试神经网络预测C 移植模型转换通过跟踪转换为 Torch Script通过注解转换为 Torch Script 编写…

Python基础复习【第二弹】【黑马】

本篇是观看b站黑马视频所做的笔记第一弹&#xff0c;为99-126节。 b站-黑马Python import json from pyecharts.charts import Line from pyecharts.charts import Bar from pyecharts.options import * from pyecharts.globals import ThemeType # 1.1 将一个列表转换为json…

数据结构 排序

数据结构 排序 文章目录 数据结构 排序1. 排序的概念及引用1.1 排序的概念1.2 常见的排序算法 2.常见排序算法的实现2.1 插入排序2.1.1 基本思想2.1.2 直接插入排序2.1.3 希尔排序(缩小增量排序) 2.2 选择排序2.2.1 基本思想2.2.2 直接选择排序2.2.3 堆排序 2.3 交换排序2.3.1 …

Java后端模拟面试 题集④

1.你先作个自我介绍吧 面试官您好&#xff0c;我叫张睿超&#xff0c;来自湖南长沙&#xff0c;大学毕业于湖南农业大学&#xff0c;是一名智能科学与技术专业的统招一本本科生。今天主要过来面试贵公司的Java后端开发工程师岗位。 大学里面主修的课程是Java、Python、数字图…

使用QT实现http里面的get和post

#1024程序员节&#xff5c;参与投稿&#xff0c;赢限定勋章和专属大奖# #假如你有一台服务器&#xff0c;你最想做哪些事&#xff1f;# #你被什么样的BUG困扰过一周以上&#xff1f;# 在http里面下面这些方法和服务器的响应代码一起用于HTTP协议中的请求和响应交互。请注意&…

Spring Boot + EasyUI 创建第一个项目(一)

创建一个Spring Boot和EasyUI相结合的项目。 一、构建一个Spring Boot项目 Spring Boot之创建一个Spring Boot项目&#xff08;一&#xff09;-CSDN博客 二、配置Thymeleaf Spring Boot Thymeleaf&#xff08;十一&#xff09;_thymeleaf 设置字体_人……杰的博客-CSDN博客…

解决 el-tree setChecked 方法偶尔失效的方法

目前在大多数公司中&#xff0c;菜单的权限控制都是不可或缺的功能 在和后端配合做权限控制的时候不可避免的会用到 el-tree 然而这个组件本身带的坑不少 我们需要回显对应角色拥有的菜单&#xff0c;在不严格的模式下&#xff0c;父节点的选中会连带子节点的选中 如果 &a…

mybatisplus开启sql打印的三种方式

1、在application.yml文件中添加mybatisplus的配置文件 使用mybatisplus自带的log-impl配置&#xff0c;可以在控制台打印出sql语句、执行结果的数据集、数据结果条数等详细信息&#xff0c;这种方法适合再调试的时候使用&#xff0c;因为这个展示的信息详细&#xff0c;更便于…

【算法练习Day25】 重新安排行程N 皇后 解数独

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 重新安排行程N 皇后解数独总…

C# Socket通信从入门到精通(2)——多个同步TCP客户端C#代码实现

前言: 我们在开发Tcp客户端程序的时候,有时候在同一个软件上我们要连接多个服务器,这时候我们开发的一个客户端就不够使用了,这时候就需要我们开发出来的软件要支持连接多个服务器,最好是数量没有限制,这样我们就能应对任意数量的服务器连接,由于我们开发的Tcp客户端程…

使用 Visual Studio Code (VS Code) 作为 Visual C++ 6.0 (VC6) 的编辑器

使用 Visual Studio Code (VS Code) 作为 Visual C 6.0 (VC6) 的编辑器 由于一些众所周知的原因&#xff0c;我们不得不使用经典&#xff08;过时&#xff09;的比我们年龄还大的已有 25 年历史的 VC 6.0 来学习 C 语言。而对于现在来说&#xff0c;这个经典的 IDE 过于简陋&a…

Leetcode1833. 雪糕的最大数量

Every day a Leetcode 题目来源&#xff1a;1833. 雪糕的最大数量 解法1&#xff1a;贪心 排序 本题唯一的难点在于计数排序。 计数排序详解&#xff1a;C算法之计数排序 为了尽可能多的买到雪糕&#xff0c;我们选择从价格低的雪糕开始买&#xff0c;统计能够买到的雪糕…

Java学习_day03_变量数据类型运算符

文章目录 变量定义声明赋值使用简化 数据类型基本数据类型整型浮点型布尔型字符型空型 引用数据类型数据类型转换自动类型转换强制类型转换 运算符算术运算符赋值运算符比较运算符逻辑运算符位运算符条件运算符一元运算符二元运算符三元运算符运算符优先级 变量 变量类似于数学…

计算机算法分析与设计(12)---贪心算法(最优装载问题和哈夫曼编码问题)

文章目录 一、最优装载问题1.1 问题表述1.2 代码编写 二、哈夫曼编码2.1 哈夫曼编码概述2.2 前缀码2.3 问题描述2.4 代码思路2.5 代码编写 一、最优装载问题 1.1 问题表述 1. 有一批集装箱要装上一艘载重量为 c c c 的轮船&#xff0c;已知集装箱 i ( 1 ≤ i ≤ n ) i(1≤i≤…

【C++】假设给类分配的是栈的空间,那么计算机是如何访问栈中不同位置的对象的数据的呢?

2023年10月22日&#xff0c;周日上午 当在栈上创建一个对象时&#xff0c;计算机会为该对象分配一块连续的内存空间。该内存空间的位置在栈帧中&#xff0c;栈帧是用来存储函数调用信息和局部变量的一块内存区域。 栈帧中包含一个指针&#xff0c;称为栈指针&#xff08;stack…

昇腾CANN 7.0 黑科技:大模型训练性能优化之道

目前&#xff0c;大模型凭借超强的学习能力&#xff0c;已经在搜索、推荐、智能交互、AIGC、生产流程变革、产业提效等场景表现出巨大的潜力。大模型经过海量数据的预训练&#xff0c;通常具有良好的通用性和泛化性。用户基于“大模型预训练微调”开发范式即可在实际业务场景取…

MySQL——练习

MySQL 一、练习要求二、练习过程 一、练习要求 创建表并插入数据&#xff1a; 字段名数据类型主键外键非空唯一自增idINT是否是是否nameVARCHAR(50)否否是否否glassVARCHAR(50)否否是否否 sch 表内容 id name glass 1 xiaommg glass 1 2 xiaojun glass 21、创建一个可以统计…

dirsearch网站目录暴力破解

介绍&#xff1a; dirsearch是一个基于python3的命令行工具&#xff0c;常用于暴力扫描页面结构&#xff0c;包括网页中的目录和文件。相比其他扫描工具disearch的特点是&#xff1a; 支持HTTP代理多线程支持多种形式的网页&#xff08;asp,php&#xff09;生成报告&#xff0…