交叉注意力融合时域、频域特征的FFT + CNN -BiLSTM-CrossAttention轴承故障识别模型

往期精彩内容:
Python-凯斯西储大学(CWRU)轴承数据解读与分类处理
Pytorch-LSTM轴承故障一维信号分类(一)-CSDN博客
Pytorch-CNN轴承故障一维信号分类(二)-CSDN博客
Pytorch-Transformer轴承故障一维信号分类(三)-CSDN博客
三十多个开源数据集 | 故障诊断再也不用担心数据集了!
Python轴承故障诊断 (一)短时傅里叶变换STFT-CSDN博客
Python轴承故障诊断 (二)连续小波变换CWT-CSDN博客
Python轴承故障诊断 (三)经验模态分解EMD-CSDN博客
Python轴承故障诊断 (四)基于EMD-CNN的故障分类-CSDN博客
Python轴承故障诊断 (五)基于EMD-LSTM的故障分类-CSDN博客
Python轴承故障诊断 (六)基于EMD-Transformer的故障分类-CSDN博客
Python轴承故障诊断 (七)基于EMD-CNN-LSTM的故障分类-CSDN博客
Python轴承故障诊断 (八)基于EMD-CNN-GRU并行模型的故障分类-CSDN博客
Python轴承故障诊断 (九)基于VMD+CNN-BiLSTM的故障分类-CSDN博客
Python轴承故障诊断 (十)基于VMD+CNN-Transfromer的故障分类-CSDN博客
基于FFT + CNN - BiGRU-Attention 时域、频域特征注意力融合的轴承故障识别模型-CSDN博客
基于FFT + CNN - Transformer 时域、频域特征融合的轴承故障识别模型-CSDN博客
Python轴承故障诊断 (11)基于VMD+CNN-BiGRU-Attenion的故障分类-CSDN博客
创新点:利用交叉注意力机制融合特征模型!
前言
本文基于凯斯西储大学(CWRU)轴承数据,进行快速傅里叶变换(FFT)的介绍与数据预处理,最后通过Python实现基于FFT的CNN-BiLSTM-CrossAttention模型对故障数据的分类。凯斯西储大学轴承数据的详细介绍可以参考下文:
Python-凯斯西储大学(CWRU)轴承数据解读与分类处理_凯斯西储大学轴承数据集-CSDN博客
模型整体结构
模型整体结构如下所示,一维故障信号经过FFT变换的频域特征以及信号本身的时域特征分别经过CNN卷积池化操作,提取全局特征,然后再经过BiLSTM提取时序特征,使用交叉注意力机制融合时域和频域的特征,通过计算注意力权重,使得模型更关注重要的特征再进行特征增强融合,最后经过全连接层和softmax输出分类结果。

时域和频域特征提取:
对时域信号应用FFT,将信号转换到频域。
利用CNN对频域特征进行学习和提取。CNN的卷积层可以捕捉频域特征的局部模式。
BiLSTM网络:
将时域信号输入BiLSTM网络。BiLSTM(双向长短时记忆网络)可以有效地捕捉时域信号的长期依赖关系。
交叉注意力机
使用交叉注意力机制融合时域和频域的特征。这可以通过计算注意力权重,使得模型更关注重要的特征
1 快速傅里叶变换FFT原理介绍
傅里叶变换是一种信号处理和频谱分析的工具,用于将一个信号从时间域转换到频率域。而快速傅里叶变换(FFT)是一种高效实现傅里叶变换的算法,特别适用于离散信号的处理。

第一步,导入部分数据
fromscipy.ioimportloadmat
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rc("font", family='Microsoft YaHei')# 读取MAT文件
data1 = loadmat('0_0.mat') # 正常信号
data2 = loadmat('21_1.mat') # 0.021英寸 内圈
data3 = loadmat('21_2.mat') # 0.021英寸 滚珠
data4 = loadmat('21_3.mat') # 0.021英寸 外圈
# 注意,读取出来的data是字典格式,可以通过函数type(data)查看。
第二步,故障信号可视化

第三步,故障信号经过FFT可视化

2 轴承故障数据的预处理
2.1 导入数据
参考之前的文章,进行故障10分类的预处理,凯斯西储大学轴承数据10分类数据集:

train_set、val_set、test_set 均为按照7:2:1划分训练集、验证集、测试集,最后保存数据

上图是数据的读取形式以及预处理思路
2.2 制作数据集和对应标签

3 交叉注意力机制

3.1 Cross attention概念
-
Transformer架构中混合两种不同嵌入序列的注意机制
-
两个序列必须具有相同的维度
-
两个序列可以是不同的模式形态(如:文本、声音、图像)
-
一个序列作为输入的Q,定义了输出的序列长度,另一个序列提供输入的K&V
3.2 Cross-attention算法
-
拥有两个序列S1、S2
-
计算S1的K、V
-
计算S2的Q
-
根据K和Q计算注意力矩阵
-
将V应用于注意力矩阵
-
输出的序列长度与S2一致

在融合过程中,我们将经过FFT变换的频域特征作为查询序列,时序特征作为键值对序列。通过计算查询序列与键值对序列之间的注意力权重,我们可以对不同特征之间的关联程度进行建模。
4 基于FFT+CNN-BiLSTM-CrossAttention的轴承故障识别模型
4.1 网络定义模型

注意:输入故障信号数据形状为 [32, 1024], batch_size=32, ,1024代表序列长度。
4.2 设置参数,训练模型

50个epoch,准确率100%,用FFT+CNN-BiLSTM-CrossAttention融合网络模型分类效果显著,模型能够充分提取轴承故障信号的空间和时序特征和频域特征,收敛速度快,性能优越,精度高,交叉注意力机制能够对不同特征之间的关联程度进行建模,从故障信号频域、时域特征中属于提取出对模型识别重要的特征,效果明显。
4.3 模型评估
准确率、精确率、召回率、F1 Score

故障十分类混淆矩阵:

5 代码、数据整理如下:

相关文章:
交叉注意力融合时域、频域特征的FFT + CNN -BiLSTM-CrossAttention轴承故障识别模型
往期精彩内容: Python-凯斯西储大学(CWRU)轴承数据解读与分类处理 Pytorch-LSTM轴承故障一维信号分类(一)-CSDN博客 Pytorch-CNN轴承故障一维信号分类(二)-CSDN博客 Pytorch-Transformer轴承故障一维信号分类(三)-CSDN博客 三十多个开源…...
CSDN Markdown 编辑器语法大全
Markdown 是一种轻量级标记语言,它以简洁、易读易写的特点,被广泛应用于技术文档、博客文章、笔记等领域。CSDN 的 Markdown 编辑器为用户提供了丰富的功能,让用户能够轻松地创建格式规范、内容丰富的文档。以下是一份详细的 CSDN Markdown 编…...
TCP/IP 协议【四次挥手】简要说明
四次挥手是为了确保数据的完整性和可靠性,解决的主要问题是双方在断开连接时,可能还有未完成传输的数据或者未被接收的数据。 具体来说,四次挥手解决的问题是: 第一次挥手(发送方向接收方发送FIN包)&#…...
第11篇:网络安全协议
目录 引言 11.1 安全套接字层(SSL)和传输层安全(TLS)协议 11.1.1 SSL/TLS 的工作原理 11.1.2 SSL/TLS 的应用场景 11.2 虚拟专用网(VPN)和 IP 安全协议(IPSec) 11.2.1 VPN 的工…...
ES-入门-javaApi-文档-新增-删除
新增指定索引的文档数据的代码如下: package com.atgulgu.es.test;import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.http.HttpHost; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.index.IndexRe…...
【视频生成大模型】 视频生成大模型 THUDM/CogVideoX-2b
【视频生成大模型】 视频生成大模型 THUDM/CogVideoX-2b CogVideoX-2b 模型介绍发布时间模型测试生成的demo视频生成视频限制 运行环境安装运行模型下载开源协议参考 CogVideoX-2b 模型介绍 CogVideoX是 清影 同源的开源版本视频生成模型。 基础信息: 发布时间 2…...
【MR开发】在Pico设备上接入MRTK3(三)——在Unity中运行MRTK示例
在前面的文档中,介绍了如何在Unity工程中配置号MRTK和Pico SDK 【MR开发】在Pico设备上接入MRTK3(一)在Unity中导入MRTK3依赖【MR开发】在Pico设备上接入MRTK3(二)在Unity中配置Pico SDK 本文将介绍如何运行一个简单…...
C#中委托的应用与示例
委托 委托是指把事情托付给别人或别的机构办理。在C#语言中委托是一种特殊类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递。委托是具有特定参数列表和返回类型的方法的引用的类型(不是引用对象,而是引用方法)。 可以委托将看作一个包含有序方法列表…...
算法: 模拟题目练习
文章目录 模拟替换所有的问号提莫攻击Z 字形变换外观数列数青蛙 总结 模拟 替换所有的问号 按照题目的要求写代码即可~ public String modifyString(String ss) {int n ss.length();if (n 1) {return "a";}char[] s ss.toCharArray();for (int i 0; i < n; i…...
软考中级科目怎么选?软考中级证书有什么用?
❇有计算机背景: 建议选择软件设计师或网络工程师。软件设计师更适合软件工程专业的同学报考,而网络工程师更适合网络工程专业的朋友(仅供参考)。 ❇没有计算机背景: 建议选择系统集成项目管理工程师作为入门科目。…...
HTTP 请求的请求体是什么
HTTP 请求的请求体(request body)是指在 HTTP 请求中除了请求行(request line)、请求头(headers)之外的实际数据部分。请求体通常包含用于向服务器发送数据的信息,这些信息可以是表单数据、JSON 对象、XML 文档或其他任何形式的数据。 http请求一般包含的内容 HTTP(超…...
助力语音技术发展,景联文科技提供语音数据采集服务
语音数据采集是语音识别技术、语音合成技术以及其他语音相关应用的重要基础。采集高质量的语音数据有助于提高语音识别的准确性,同时也能够促进语音技术的发展。 景联文科技作为专业的数据采集标注公司,支持语音数据采集。可通过手机、专业麦克风阵列、专…...
PyTorch搭建神经网络入门教程
PyTorch搭建神经网络入门教程 在机器学习和深度学习中,神经网络是最常用的模型之一,而 PyTorch 是一个强大的深度学习框架,适合快速开发与研究。在这篇文章中,我们将带你一步步搭建一个简单的神经网络,并介绍 PyTorch…...
你的电脑能不能安装windows 11,用这个软件检测下就知道了
为了应对Windows 11的推出,一款名为WhyNotWin11的创新型诊断软件应运而生。这个强大的工具不仅仅是一个简单的兼容性检测器,它更像是一位细心的数字医生,全方位评估您的计算机是否准备好迎接微软最新操作系统的挑战。 WhyNotWin11的功能远超…...
BF 算法
目录 BF算法 算法思路 完整代码 时间复杂度 查找所有起始位置 BF算法 BF算法:即暴力(Brute Force)算法,是一种模式匹配算法,将目标串 S 的第一个字符与模式串 T 的第一个字符进行匹配,若相等,则继续比较 S 的第二…...
SHOW-O——一款结合多模态理解和生成的单一Transformer
1.前言 大型语言模型 (LLM) 的重大进步激发了多模态大型语言模型 (MLLM) 的发展。早期的 MLLM 工作,例如 LLaVA、MiniGPT-4 和 InstructBLIP,展示了卓越的多模态理解能力。为了将 LLM 集成到多模态领域,这些研究探索了将预训练的模态特定编码…...
缓存框架JetCache源码解析-缓存变更通知机制
为什么需要缓存变更通知机制?如果我们使用的是本地缓存或者多级缓存(本地缓存远程缓存),当其中一个节点的本地缓存变更之后,为了保证缓存尽量的一致性,此时其他节点的本地缓存也需要去变更,这时…...
Android 设置特定Activity内容顶部显示在状态栏底部,也就是状态栏的下层 以及封装一个方法修改状态栏颜色
推荐:https://github.com/gyf-dev/ImmersionBar 在 Android 中要实现特定 Activity 内容顶部显示在状态栏底部以及封装方法修改状态栏颜色,可以通过以下步骤来完成: 一、让 Activity 内容显示在状态栏底部 在 AndroidManifest.xml 文件中,为特…...
用自己的数据集复现YOLOv5
yolov5已经出了很多版本了,这里我以目前最新的版本为例,先在官网下载源码:GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite 然后下载预训练模型,需要哪个就点击哪个模型就行&am…...
如何在博客中插入其他的博客链接(超简单)最新版
如何在博客中插入其他的博客链接 1.复制自己要添加的网址(组合键:Ctrlc)2. 点击超链接按钮3. 粘贴自己刚才复制的网址(组合键:Ctrlv)并点击确定即可4.让博客链接显示中文5.点击蓝字即可打开 1.复制自己要添…...
Embedded Coder vs Simulink Coder:如何为你的项目选择正确的代码生成工具?
Embedded Coder与Simulink Coder深度对比:从项目需求出发的选型指南 在嵌入式系统开发领域,代码生成工具的选择往往决定了项目的成败。当工程师面对MathWorks提供的两款核心代码生成工具——Embedded Coder和Simulink Coder时,如何做出明智决…...
Qwen3-0.6B-FP8在单片机开发中的启发:生成嵌入式C语言代码片段
Qwen3-0.6B-FP8在单片机开发中的启发:生成嵌入式C语言代码片段 1. 引言 如果你是一位单片机开发者,可能经常遇到这样的场景:面对一个新的外设模块,或者要实现一个不太熟悉的功能,第一反应就是去翻数据手册、找官方例…...
【量子计算C++实战指南】:20年专家亲授,从零搭建Shor算法仿真器(含完整可运行代码)
第一章:量子计算与C编程的融合基础量子计算正从理论走向工程实践,而C凭借其零开销抽象、内存可控性与高性能特性,成为量子软件栈底层实现的关键语言。现代量子开发框架(如QPP、Q、XACC)普遍提供C原生API,使…...
碳汇 / 碳循环研究必备:植被净初级生产力(NPP)的模拟与预测-LPJ 模型构建、数据制备、敏感性分析与未来情景预测
在生态学、地理学以及全球变化研究的领域中,植被净初级生产力(NPP)的模拟与预测始终是一个核心议题。无论是评估生态系统的碳汇潜力,还是探究植被对气候变化的响应机制,LPJ(Lund-Potsdam-Jena)及…...
编程新手必看:C语言基础全解析
在当今这个数字化时代,编程已成为一项不可或缺的技能。而C语言,作为编程世界的“老牌强者”,不仅因其高效、灵活的特点被广泛应用于系统编程、嵌入式开发等领域,更是许多编程爱好者学习编程的首选语言。本文将带你走进C语言的世界…...
如何用Synonyms实现智能问答系统:面向初学者的完整指南
如何用Synonyms实现智能问答系统:面向初学者的完整指南 【免费下载链接】Synonyms :herb: 中文近义词:聊天机器人,智能问答工具包 项目地址: https://gitcode.com/gh_mirrors/sy/Synonyms Synonyms是一个强大的中文近义词工具包&#…...
新手避坑指南:用Pandas高效合并CIC-IDS-2018的10个CSV文件(附内存优化技巧)
新手避坑指南:用Pandas高效合并CIC-IDS-2018的10个CSV文件(附内存优化技巧) 网络安全数据分析的第一步往往是从处理原始数据集开始。CIC-IDS-2018作为业内广泛使用的基准数据集,其分散在10个CSV文件中的特征数据给初学者带来了不小…...
单片机核心功能解析与实战技巧
1. 单片机学习的核心功能解析作为一名在嵌入式领域摸爬滚打多年的工程师,我深知单片机学习的关键不在于死记硬背,而在于掌握几个核心功能的底层逻辑和应用场景。很多初学者容易陷入"学了很多却不会用"的困境,根本原因就是没有抓住这…...
嵌入式C轻量序列化库:结构体打包与位操作零依赖实现
1. 项目概述dot_util是一个轻量级、零依赖的嵌入式 C 语言工具库,专为资源受限的 MCU(如 Cortex-M0/M3/M4、RISC-V 32 位内核)设计。其核心定位并非通用算法库或 HAL 封装,而是聚焦于底层数据序列化与结构体操作的工程痛点&#x…...
STM32驱动AS-108M/AD-013指纹模块底层协议与高可靠实现
1. SparkFun串口指纹识别模块AS-108M与AD-013底层驱动技术解析 SparkFun Serial Fingerprint Scanners AS-108M 和 AD-013 是两款基于国产中科芯(CETC)ZFM-20系列指纹识别模组核心的工业级串口指纹传感器。尽管官方文档简略,但通过逆向分析其…...
