分类预测 | MATLAB实现CNN-GRU-Attention多输入分类预测

news2024/10/7 10:18:35

分类预测 | MATLAB实现CNN-GRU-Attention多输入分类预测

目录

    • 分类预测 | MATLAB实现CNN-GRU-Attention多输入分类预测
      • 分类效果
      • 模型描述
      • 程序设计
      • 参考资料

分类效果

1
2
3
4
5
6
7

模型描述

Matlab实现CNN-GRU-Attention多变量分类预测
1.data为数据集,格式为excel,12个输入特征,输出四个类别;
2.MainCNN-GRU-AttentionNC.m为主程序文件,运行即可;

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

1
2

程序设计

  • 完整程序和数据获取方式1:同等价值程序兑换;
  • 完整程序和数据获取方式2:私信博主获取。
%%  数据平铺
%   将数据平铺成1维数据只是一种处理方式
%   也可以平铺成2维数据,以及3维数据,需要修改对应模型结构
%   但是应该始终和输入层数据结构保持一致
p_train =  double(reshape(P_train, 15, 1, 1, M));
p_test  =  double(reshape(P_test , 15, 1, 1, N));
%-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
%%  构造网络结构
layers = [
 imageInputLayer([15, 1, 1])             % 输入层
 
 convolution2dLayer([2, 1], 16)          % 卷积核大小为2*1 生成16个卷积
 batchNormalizationLayer                 % 批归一化层
 reluLayer                               % relu激活层
 
 maxPooling2dLayer([2, 1], 'Stride', 1)  % 最大池化层 大小为2*1 步长为2
 
 convolution2dLayer([2, 1], 32)          % 卷积核大小为2*1 生成32个卷积
 batchNormalizationLayer                 % 批归一化层
 reluLayer                               % relu激活层
 
 maxPooling2dLayer([2, 1], 'Stride', 1)  % 最大池化层,大小为2*2,步长为2

 fullyConnectedLayer(4)                  % 全连接层(类别数) 
 softmaxLayer                            % 损失函数层
 classificationLayer];                   % 分类层
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%%  创建网络
layers = [ ...
  sequenceInputLayer(12)               % 输入层
  
  gruLayer(6, 'OutputMode', 'last')    % GRU层
  reluLayer                            % Relu激活层
  
  fullyConnectedLayer(4)               % 全连接层
  softmaxLayer                         % 分类层
  classificationLayer];

%%  参数设置
options = trainingOptions('adam', ...       % Adam 梯度下降算法
    'MiniBatchSize', 100, ...               % 批大小
    'MaxEpochs', 1000, ...                  % 最大迭代次数
    'InitialLearnRate', 1e-2, ...           % 初始学习率
    'LearnRateSchedule', 'piecewise', ...   % 学习率下降
    'LearnRateDropFactor', 0.1, ...         % 学习率下降因子
    'LearnRateDropPeriod', 700, ...         % 经过700次训练后 学习率为 0.01 * 0.1
    'Shuffle', 'every-epoch', ...           % 每次训练打乱数据集
    'ValidationPatience', Inf, ...          % 关闭验证
    'Plots', 'training-progress', ...       % 画出曲线
    'Verbose', false);
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%%  训练模型
net = trainNetwork(p_train, t_train, layers, options);

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/129943065?spm=1001.2014.3001.5501
[2] https://blog.csdn.net/kjm13182345320/article/details/129919734?spm=1001.2014.3001.5501

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

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

相关文章

集合-LinkedList

LinkedList LinkedList的概述 LinkedList的底层使用双向链表实现。 链表是一种线性数据结构,其中每个元素都是一个单独的对象,包含一个指向列表中下一个节点的引用。 它可以用于实现各种抽象数据类型,例如列表、堆栈、队列等。 LinkedLis…

安装Nginx——docker安装

使用docker安装Nginx 1.开启docker systemctl start docker docker search nginx[rootlocalhost ~]# systemctl start docker //开启docker [rootlocalhost ~]# docker search nginx //搜素镜像 2. docker pull nginxdocker imagesdocker run -…

如何将录音转成文字?

在现代社会中,随着语音技术的不断发展和普及,将录音转换为文字变得越来越容易。无论是为了记录会议、面试、讲座、采访,还是为了记录个人的思考和想法,将录音转换为文字是一种方便快捷的方式。本文将介绍几种将录音转换为文字的方…

计算机系统结构教程-第七章-储存系统笔记(1)

7.1储存系统的层次结构 概述 理想的储存器:容量大、速度快、价格低。 但以上三种要求在实际应用中是相互矛盾: (1)速度快,价格高。 (2)容量大,价格低。 (3&#xf…

ESLint检测VUE和JSON文件

ESLint 默认只支持检测JS文件中的文件,无法识别其它类型的文件,如果需要检测其它类型的文件就需要安装并指定对应的处理器,有点类似webpack的loader 处理vue文件 使用ESLint默认的处理器处理Vue文件大多数情况下会收到一个这样的错误。 Pa…

贪心算法

章节目录:一、算法介绍二、应用场景-集合覆盖问题2.1 问题引出2.2 思路分析2.3 代码示例三、结束语一、算法介绍 贪心算法(greedy algorithm ,又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的…

Vue04_事件绑定_methods

v-on:事件名"表达式" methods: 定义回调函数 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body><div id"app"><!--eve…

12、Qt生成dll方式-libs方式使用

Qt创建dll&#xff0c;使用LIBS -L$PWD -lxxx的方式调用dll 一、创建项目 1、打开Qt->新建文件->其他项目->Empty qmake Project->Choose... 2、输入项目名->选择位置->下一步 3、MinGW->下一步 4、默认&#xff0c;完成 5、在.pro中添加TEMPLATE sub…

C51单片机按键控制流水灯模式(定时器版本)以及定时器时钟

上篇文章我们学了关于定时器的三大组成部分及许多寄存器的概念问题&#xff0c;这篇文章我们就要开始讲解实操部分。 首先&#xff0c;我们先来看看本文最后写成的代码&#xff1a; 以上三张是代码的主函数&#xff0c;此外&#xff0c;代码中还需用到的独立按键检测代码在下面…

【Linux】回车与换行的区别+简单实现倒计时和进度条(学以致用)

前言&#xff1a;本文主要讲解回车与换行的区别&#xff0c;理解完回车与换行的区别后&#xff0c;我们将带大家实现一个简单的倒计时程序&#xff0c;会利用到本文学习的回车与换行&#xff0c;做到学以致用。 文章目录一.理解回车与换行(1)\r和\n都存在(2)\r和\n都不存在(3) …

单片机作业第4章

1.SJMP rel 无条件跳转指令 rel是相对偏移量&#xff0c;是一个单字节的带符号8位二进制补码数&#xff0c;所以它能实现的程序跳转是双向的。 2. (单选题, 2分)当CPU响应外部中断0 (INT0)的中断请求后&#xff0c;程序计数器PC的内容是 &#xff08; A &#xff09; 。 A…

性能优化之-事件代理

js中的事件委托或是事件代理简单理解 事件委托也叫事件代理&#xff0c;“事件代理”即是把原本需要绑定在子元素的响应事件&#xff08;click、keydown…&#xff09;委托给父元素&#xff0c;让父元素担当事件监听的职务。事件代理的原理是DOM元素的事件冒泡。 概述&#x…

Direct3D 12——灯光——法向量

a:平面法线着色 b:顶点法线着色 c:像素着色 平面法线&#xff08;face normal,由于在计算机几何学中法线是有方向的向量&#xff0c;所以也有将normal译作法向量&#xff09; 是 一种描述多边形朝向&#xff08;即正交于多边形上所有点&#xff09;的单位向量。 曲面法线&a…

[C++]vector类的模拟实现和相关函数的详解

文章目录架构实现默认构造函数构造函数拷贝构造为什么不能使用memcpy()进行拷贝&#xff08;浅拷贝问题&#xff09;析构函数赋值重载[]迭代器begin && end操作函数size() && capacity()push_back()reserve()resize()insert()erase()完整代码架构 首先由于自定…

RabbitMQ消息队列实战(4)—— spring-boot-starter-amqp中消息的可靠性传输和确认机制

在上一篇文章中&#xff0c;笔者整理了从消息生产出来到消费结束的整个生命周期过程中&#xff0c;为了确保消息能够可靠到达或者消费&#xff0c;我们需要在哪些环节进行哪些处理&#xff0c;同时也展示了使用Java原生代码怎么样在这些环节进行处理。本文主要介绍使用spring b…

java静态代码块

在 Java中&#xff0c;每个类都有一个静态的代码块&#xff0c;用来描述类的构造函数和实例变量。在 java. util. Static中定义了一个静态代码块&#xff0c;在该代码块中&#xff0c;类的构造函数和实例变量都是不可以被修改的。 一个类包含了由它自己定义的静态代码块&#x…

【论文阅读】Self-paced Multi-view Co-training

论文下载 bib: ARTICLE{MaMeng2020SPamCo, title {Self-Paced Multi-View Co-Training}, author {Fan Ma and Deyu Meng and Xuanyi Dong and Yi Yang}, journal {J. Mach. Learn. Res.}, year {2020}, volume {21}, number {1}, numpages {1--38} }目录1.…

Kubernetes中的Calico网络

文章目录1 介绍2 环境部署3 IPIP模式3.1 测试环境3.2 ping包网络转发4 BGP模式4.1 测试环境4.2 ping网络转发5 两种模式对比1 介绍 Calico网络的大概思路&#xff0c;即不走Overlay网络&#xff0c;不引入另外的网络性能损耗&#xff0c;而是将转发全部用三层网络的路由转发来…

GPSS【实践 01】Developing a Greenplum Streaming Server Client 自定义GPSS客户端开发实例

自定义GPSS客户端开发流程1.GPSS是什么2.架构3.组件下载安装4.自定义客户端4.1 GPSS Batch Data API Service Definition4.2 Setting up a Java Development Environment4.3 Generating the Batch Data API Client Classes4.4 Coding the GPSS Batch Data Client4.4.1 Connect …

【论文笔记】Attention Augmented Convolutional Networks(ICCV 2019 入选文章)

目录 一、摘要 二、介绍 三、相关工作 卷积网络Convolutional networks&#xff1a; 网络中注意力机制Attention mechanisms in networks&#xff1a; 四、方法 1. 图像的自注意力Self-attention over images&#xff1a; 二维位置嵌入Two-dimensional Positional Enco…