发文新思路!双流卷积!CWT-DSCNN-MSA基于时序特征、cwt小波时频图的双流卷积融合注意力机制的故障识别程序!直接运行!

适用平台:Matlab2023版本及以上

本程序参考中文EI期刊《电力自动化设备》2023年12月29号网络首发文献:《基于格拉姆角场与并行CNN的并网逆变器开关管健康诊断》,此外,在此基础上进一步对模型进行多重改进,每个人都可以构造属于自己的双流卷积!

文献解读:这篇文献中,首先,采集一维故障电压与电流信号的时序序列;其次,利用格拉姆角场对其进行变换,将两种一维时序信号转化为格拉姆角场,最后,将生成的两组图像同时送入CNN进行并行学习训练,实现逆变器故障诊断。

模型改进:我们提出的模型在上述模型基础上作出多重改进:采用双支路结构,构造双流卷积模型(Dual-Stream Convolutional Neural Network,DSCNN),仅需原始故障波形数据,即可根据波形数据,将一维序列转化为二维小波cwt时频图像。①一路为图像输入经2D-CNN提取小波时频图像特征,②另一路为故障波形直接输入1D-CNN提取时序特征,高维图像特征和一维时序特征融合,构建出1D-CNN和2D-CNN(DSCNN)模型。③融合多头注意力机制有效把握提取特征的贡献程度,将特征进行重点强化,提高故障识别的准确率,并计算精确度、召回率、精确率、F1分数等评价指标。故障识别流程如下:

七重创新点:

1、双流卷积:将一维时序信号和二维图像融合,可以综合利用不同模态的信息,从而更全面地描述数据的特征。这有助于提取更丰富、更有区别性的特征,从而提高故障识别的准确性,仅需原始故障波形数据,即可将一维序列转化为二维cwt时频图像。

2、cwt时频特征:cwt时频图提供了时频局部化的特征,可以确定波形在时间和频率上的局部特征。这对于识别故障信号中的瞬态特征或频率成分的突发变化非常有效,这些特征在单一的时域或频域分析中难以分析。

3、波形特征提取:1D-CNN更适合于捕获局部特征和序列中的局部模式。在故障波形中,许多重要的特征可能集中在特定的时间段内,1D-CNN可以更好地捕获这些时间相关的局部特征。

4、空间特征学习:2D-CNN在图像处理中表现出色,能够有效地学习图像的空间特征和局部模式。将2维卷积用于图像数据的处理可以帮助提取图像的纹理、形状和边缘等特征,有助于更准确地进行分类和故障识别。

5、融合优势:通过融合不同模态的信息,算法可以弥补一维时序信号和二维图像各自的局限性。例如,图像可能对于某些故障模式更敏感,而时序信号则对于其他模式更敏感。将它们结合起来,可以增强算法的鲁棒性和泛化能力。

6、多头自注意力机制:融合多头注意力机制有效把握提取特征的贡献程度,将特征进行重点强化,提高故障识别的准确率。

7、提高泛化能力:多模态融合可以帮助算法更好地理解数据的本质特征,从而减少过拟合的风险,提高算法在新数据上的泛化能力。

适用领域:适用于各种数据分类场景,如滚动轴承故障、变压器油气故障、电力系统输电线路故障区域、绝缘子、配网、电能质量扰动,等领域的识别、诊断和分类。

直接替换数据就可以,使用Excel表格直接导入,不需要对程序大幅修改。程序内有详细注释,便于理解程序运行。

数据格式:一行一个样本,最后一列为样本所属的故障类型标签

程序结果:(由上述一维序列自动转化为cwt小波时频图像)

双流模型结构:

训练曲线:

部分图片来源于网络,侵权联系删除!

部分代码:

完整代码:https://mbd.pub/o/bread/ZZqcmphx%% 构建 Dual-Stream Convolutional Neural Network,DCNN-MSA模型
% 创建层图
lgraph = layerGraph();% 添加层分支
tempLayers = [imageInputLayer([227 227 3],"Name","二维时频图输入","Normalization","zscore")convolution2dLayer([3 3],64,"Name","二维卷积","BiasLearnRateFactor",0,"Padding",[3 3 3 3],"Stride",[2 2])batchNormalizationLayer("Name","批量归一化1")reluLayer("Name","Relu激活1")maxPooling2dLayer([3 3],"Name","二维池化","Padding",[1 1 1 1],"Stride",[2 2])fullyConnectedLayer(128,"Name","全连接1")flattenLayer("Name","展平1")];
lgraph = addLayers(lgraph,tempLayers);tempLayers = [imageInputLayer([1 120 1],"Name","一维序列输入","Normalization","zscore")convolution2dLayer([1 3],32,"Name","一维卷积","Padding","same")batchNormalizationLayer("Name","批量归一化2")reluLayer("Name","Relu激活2")averagePooling2dLayer([1 3],"Name","1×3池化","Padding","same")fullyConnectedLayer(128,"Name","全连接2")flattenLayer("Name","展平2")];
lgraph = addLayers(lgraph,tempLayers);tempLayers = [additionLayer(2,"Name","特征融合")selfAttentionLayer(1,50,"Name","多头自注意力","NumValueChannels",50,"OutputSize",100)fullyConnectedLayer(8,"Name","全连接3")softmaxLayer("Name","Softmax")classificationLayer("Name","输出层")];
lgraph = addLayers(lgraph,tempLayers);% 清理辅助变量
clear tempLayers;% 连接层分支
lgraph = connectLayers(lgraph,"展平1","特征融合/in1");
lgraph = connectLayers(lgraph,"展平2","特征融合/in2");figure
% 绘制层
plot(lgraph);
string={'双流卷积(DSCNN-MSA)结构'};
title(string)%% 网络选项
options = trainingOptions('adam', ...  % 使用 Adam 优化算法进行训练'MiniBatchSize',15, ...            % 每个小批量的样本数量'InitialLearnRate',0.001, ...      % 初始学习率'MaxEpochs',10, ...                % 最大迭代轮数'Shuffle','every-epoch', ...       % 每轮迭代后重新洗牌训练数据'Verbose',false, ...               % 不在命令行中显示详细信息'Plots','training-progress');      % 显示训练进度图analyzeNetwork(lgraph);                % 分析网络结构

欢迎感兴趣的小伙伴联系小编或点击代码上方链接获得完整版代码哦~,关注小编会继续推送更有质量的学习资料、文章程序代码~

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

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

相关文章

低代码流程引擎在数字设计平台的应用:简化创作流程,提升生产效率

数字设计平台在现代企业中发挥着重要的作用,它们为创作者和开发者提供了一个创新和协作的环境。然而,设计过程中繁琐的编码和复杂的工作流程可能降低生产效率。本文将介绍低代码流程引擎是如何应用于数字设计平台,以实现快速、高效的创作流程…

Android 车载应用开发之车载操作系统

一、前言 到 2030 年,全球电动汽车的销量将超过 7000 万辆,保有量将达到 3.8 亿辆,全球年度新车渗透率有望触及 60% 。这一数据来自国际能源署(IEA)发布的《全球电动汽车展望2023》。 市场趋势和政策努力的双加持下,新能源汽车来势凶猛,燃油车保有量逐年递减。此番景象…

Chrome 沙箱逃逸 -- Plaid CTF 2020 mojo

文章目录 前置知识参考文章环境搭建题目环境调试环境 题目分析附件分析漏洞分析OOBUAF 漏洞利用总结 前置知识 Mojo & Services 简介 chromium mojo 快速入门 Mojo docs Intro to Mojo & Services 译文:利用Mojo IPC的UAF漏洞实现Chrome浏览器沙箱逃逸原文…

C语言到底是高级语言还是低级语言?

一、引言 在计算机编程的世界中,C语言的地位独树一帜。它既被归类为高级语言,又具有低级语言的特性,这种双重属性使其成为连接硬件与抽象逻辑之间的桥梁。本文将深入探讨C语言为何既是“高级”的,又是“低级”的,并详…

【制作100个unity游戏之24】unity制作一个3D动物AI生态系统游戏3(附项目源码)

最终效果 文章目录 最终效果系列目录前言随着地面法线旋转在地形上随机生成动物不同部位颜色不同最终效果源码完结系列目录 前言 欢迎来到【制作100个Unity游戏】系列!本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第24篇中,我们将探索如何用unity制作一…

代码随想录day20 Java版

669. 修剪二叉搜索树 由于递归函数有返回值,对于不在范围内的节点,可以通过左右孩子递归来实现修剪。 接下来要将下一层处理完左子树的结果赋给root->left,处理完右子树的结果赋给root->right。 最后返回root节点。 class Solution…

【Linux环境基础开发工具的使用(yum、vim、gcc、g++、gdb、make/Makefile)】

Linux环境基础开发工具的使用yum、vim、gcc、g、gdb、make/Makefile Linux软件包管理器- yumLinux下安装软件的方式认识yum查找软件包安装软件如何实现本地机器和云服务器之间的文件互传卸载软件 Linux编辑器 - vimvim的基本概念vim下各模式的切换vim命令模式各命令汇总vim底行…

预测模型:MATLAB线性回归

1. 线性回归模型的基本原理 线性回归是统计学中用来预测连续变量之间关系的一种方法。它假设变量之间存在线性关系,可以通过一个或多个自变量(预测变量)来预测因变量(响应变量)的值。基本的线性回归模型可以表示为&…

【OpenHarmony硬件操作】风扇与温湿度模块

文章目录 前言一、串行通信是什么二、IC2.1 IC是什么2.2 IC涉及到的线2.3 IC的时序三、风扇的操作3.1 关于 pcf85743.2 风扇的接口函数IO拓展芯片的定义初始化PCF8574初始化 IO拓展版的引脚属性开启和关闭风扇读状态四、温湿度传感器的使用4.1 初始化温湿度传感器</

Android SDK 上传 Maven 喂奶级教程

最近领导给安排了个任务&#xff0c;让我把我们现有的一个 SDK 上传到 Maven 上去&#xff0c;方便客户直接用 gradle 依赖&#xff0c;不再需要拷贝 jar 和 so 了&#xff0c;此前我也看过一些相关的文章我想问题也不大&#xff0c;觉得工作量也就一两天的事情&#xff0c;主要…

2024.2.4 模拟实现 RabbitMQ —— 实现核心类

目录 引言 创建 Spring Boot 项目 编写 Exchange 实体类 编写 Queue 实体类 编写 Binding 实体类 编写 Message 实体类 引言 上图为模块设计图 此处实现核心类为了简便&#xff0c;我们引用 Lombok&#xff08;可点击下方链接了解 Lombok 的使用&#xff09; IDEA 配置 L…

读千脑智能笔记08_人工智能的未来(下)

1. 机器智能存在的风险 1.1. “人工智能”这个名字应用到几乎所有涉及机器学习的领域 1.2. 技术专家对人工智能的态度也从“人工智能可能永远不会实现”快速转变为“人工智能可能在不久的将来毁灭所有人类” 1.3. 每一项新技术都可能会被滥用…

面试经典150题——盛最多水的容器(图解从本质看问题)

​"Hardships often prepare ordinary people for an extraordinary destiny." - C.S. Lewis 1. 题目描述 2. 题目分析与解析 2.1 思路一——暴力求解 遇到问题最怕的就是没有思路&#xff0c;就好像人迷茫的时候最怕的就是一直迷茫&#xff0c;不知道怎么干那就…

Lua 教程

Lua 教程 (今天又又又开新坑啦) Lua 教程 手册简介 Lua 是一种轻量小巧的脚本语言&#xff0c;用标准C语言编写并以源代码形式开放。 手册说明 Lua是什么? Lua 是一个小巧的脚本语言。是巴西里约热内卢天主教大学&#xff08;Pontifical Catholic University of Rio de …

Java stream 流的基本使用

Java stream 的基本使用 package com.zhong.streamdemo.usestreamdemo;import jdk.jfr.DataAmount; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import java.util.ArrayList; import java.util.Comparator; import java.util.Li…

【ETOJ P1050】【模板】差分 题解(数学+差分+前缀和)

题目描述 给定一个长度为 n n n 的数组 a a a。 有 m m m 次修改&#xff0c;每次修改让数组 a a a 在区间 [ l , r ] [l,r] [l,r] 增加 x x x。 在修改完成后有 q q q 次询问&#xff0c;每次询问数组在区间 [ l , r ] [l,r] [l,r] 的和。 输入格式 第一行一个整…

源码梳理(3)MybatisPlus启动流程

文章目录 1&#xff0c;MybatisPlus的使用示例2&#xff0c;BaseMapper方法的执行2,1 MybatisMapperProxy代理对象2.2 InvocationHandler接口&#xff08;JDK动态代理&#xff09;2.3 MapperMethodInvoker接口2.4 MybatisMapperMethod 3&#xff0c;SqlSession的执行流程3.1 Sq…

js基础(1)

操作数组 数组.push() 将一个或多个元素添加到数组末尾&#xff0c;返回数组新长度 数组.unshift() 将一个或多个元素添加到数组末尾&#xff0c;返回数组新长度 数组.pop() 删除最后一个元素&#xff0c;返回该元素的值 更灵活的删除方法&#xff0c;删除指定元素 数组.spli…

【MySQL题】——基础概念论述(一)

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

Github 2024-02-09 开源项目日报 Top10

根据Github Trendings的统计&#xff0c;今日(2024-02-09统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目4Go项目2Scala项目1PLpgSQL项目1Ruby项目1HTML项目1Solidity项目1Lua项目1 开源个人理财应用 Mayb…