独家首发 | 基于 KAN、KAN卷积的轴承故障诊断模型

news2024/11/15 23:31:51

 往期精彩内容:

Python-凯斯西储大学(CWRU)轴承数据解读与分类处理

Python轴承故障诊断入门教学-CSDN博客

Python轴承故障诊断 (13)基于故障信号特征提取的超强机器学习识别模型-CSDN博客

Python轴承故障诊断 (14)高创新故障识别模型-CSDN博客

Python轴承故障诊断 (15)基于CNN-Transformer的一维故障信号识别模型-CSDN博客

轴承故障全家桶更新 | 基于时频图像的分类算法-CSDN博客

Python轴承故障诊断 (16)高创新故障识别模型(二)-CSDN博客

Python轴承故障诊断 (17)基于TCN-CNN并行的一维故障信号识别模型_pytorch使用tcn网络进行故障诊断 csdn-CSDN博客

独家原创 | SCI 1区 高创新轴承故障诊断模型!-CSDN博客

Python轴承故障诊断 (18)基于CNN-TCN-Attention的创新诊断模型-CSDN博客

Python轴承故障诊断 (20)高创新故障识别模型(三)-CSDN博客

注意力魔改 | 超强轴承故障诊断模型!-CSDN博客

Python轴承故障诊断 (21)基于VMD-CNN-BiTCN的创新诊断模型-CSDN博客

基于k-NN + GCN的轴承故障诊断模型-CSDN博客

火遍AI圈的最新论文 KAN: Kolmogorov-Arnold Network 大家应该听说过了,那咱们基于 KAN 的轴承故障诊断还会远吗?发论文的核心点就是紧跟前沿,跟着大牛喝口汤!这一轮热点来袭,有论文需求的同学可要把握住机会哟!

在 KAN 和 CKAN ( Convolutional Kolmogorov-Arnold Network ) 的基础上,我们提供了五种轴承故障诊断模型的对比

  • MLP: 两层 MLP (第一层神经元 64, 第二层神经元32)

  • KAN: 两层优化后的 KANLinear (第一层神经元 64, 第二层神经元32)

  • CNN-1D: 3 层的普通 1D 卷积池化层 + 1 层线性层

  • CNN-1D-KAN: 3 层的普通 1D 卷积池化层 + 1 层 KANLinear

  • KAN-Conv: 2 层的KANConv + 1 层线性层

五种模型实验效果对比如下:(注意!此代码也比较容易和我们往期推出的模型进行融合,在这个基础上,进一步增加一些实验或者模块,就可以直接拿去发文章!!!)

从对比实验可以看出, 在轴承故障诊断任务中:

KAN的准确率 要优于 MLP,我们可以进一步尝试在常规模型的最后一层线性层都替换为 KAN 层来进行对比;KAN 卷积 比常规卷积准确率有略微的提升!

相关学习资料和完整的数据、五种分类代码如下:

点击文末 阅读原文 ,获取代码

● 数据集:CWRU西储大学轴承数据集

● 环境框架:python 3.9  pytorch 2.0 及其以上版本均可运行

● 输出结果:训练过程损失、准确率曲线图、测试集准确率报告、混淆矩阵

● 使用对象:论文需求、毕业设计需求者

● 代码保证:代码注释详细、即拿即可跑通。

前言

本文基于凯斯西储大学(CWRU)轴承数据,先经过数据预处理进行数据集的制作和加载,最后通过Pytorch实现优化的KAN模型和KAN卷积模型对故障数据的分类。凯斯西储大学轴承数据的详细介绍可以参考下文:

Python-凯斯西储大学(CWRU)轴承数据解读与分类处理_cwru数据集-CSDN博客

1 KAN 网络介绍

1.1 KAN 网络三大特征

  • 数学上有据可依

  • 准确性高

  • 可解释性强

1.2 传统 MLP 的本质

多层感知机(MLPs),也称为全连接前馈神经网络,是深度学习模型的基础构建块。MLPs 的重要性不言而喻,因为它们是机器学习中用于逼近非线性函数的默认模型,其表达能力由普适逼近定理保证。

(1)容易产生梯度消失和梯度爆炸:

  • 梯度消失:梯度趋近于零,网络权重无法更新或更新的很微小,网络训练再久也不会有效果;

  • 梯度爆炸:梯度呈指数级增长,变的非常大,然后导致网络权重的大幅更新,使网络变得不稳定。

(2)参数效率低:

    MLP 通常使用全连接层,意味着每层的每个神经元都与前一层的所有神经元相连接,导致参数数量迅速增加,尤其是对输入维度很高的数据;这不仅增加了计算负担,也增加了模型过拟合的风险。

(3)可解释性差:

尽管 MLPs 的使用普遍,但它们有着显著的缺点。例如,在Transformer中,MLPs 几乎消耗所有非嵌入参数,并且通常在没有后续分析工具的情况下(相对于注意力层)不太可解释。其可解释性比较差,和一个黑盒模型一样,无法探究是怎么进行学习的。

1.3 MLP 与 KAN 对比

(1)Kolmogorov-Arnold 定理:

任何一个多变量连续函数都可以表示为一些单变量函数的组合!(

在数学的视角,任何问题的核心都是在拟合函数)

(2)激活函数可学习的:

神经网络中每一层的输入输出都是一个线性求和的过程,所以如果没有激活函数,那么无论你构造的神经网络多么复杂,有多少层,最后的输出都是输入的线性组合,纯粹的线性组合并不能够解决更为复杂的问题。而引入激活函数之后,我们会发现常见的激活函数都是非线性的,使得神经网络可以逼近其他的任何非线性函数。与MLP不同激活函数固定 ,而 KAN 激活函数可学习的, 是可变的!

  • MLP: 激活函数固定, 输入先相加再激活

  • KAN: 激活函数可学习的,输入先激活再相加

(3)样条函数:

KAN 中的每层非线性函数 Ф 都采用同样的函数结构,只是用不同的参数来控制其形状,文章选择了数值分析中的样条函数 spline ,样条理论是函数逼近的有力工具。

样条函数是由多个多项式片段组成的函数,每个片段在相邻节点之间定义。这些片段在节点处连接,以确保整体函数的光滑性。

b样条曲线有一个优势就是有明显的几何意义。通过砍角算法(嵌套的线性插值)可以方便的进行曲线的细分、导矢计算、曲线分割、逼近(消去节点),不仅可以方便的进行各种操作,而且精度比采用幂基函数的多项式样条高。

(4)MLP 与 KAN 对比:

MPL 是固定的非线性激活 + 线性参数学习,KAN 则是直接对参数化的非线性激活函数的学习。KAN 实现了使用更少的节点,更小的网络,来实现同样的效果,甚至更优的效果!

1.4 KAN 执行过程

1.5 可解释性

运行代码文件中的 hellokan.ipynb 实现上述可视化过程

2 KAN 卷积(CKAN)

2.1 CKAN 

最近,有研究者将 KAN 创新架构的理念扩展到卷积神经网络,将卷积的经典线性变换更改为每个像素中可学习的非线性激活函数,提出并开源 KAN 卷积(CKAN)

KAN 卷积与卷积非常相似,但不是在内核和图像中相应像素之间应用点积,而是对每个元素应用可学习的非线性激活函数,然后将它们相加。KAN 卷积的内核相当于 4 个输入和 1 个输出神经元的 KAN 线性层。

2.2 CKAN 中的参数

假设有一个 KxK 内核,对于该矩阵的每个元素,都有一个 ϕ,其参数计数为:gridsize + 1,ϕ 定义为:

这为激活函数 b 提供了更多的可表达性,线性层的参数计数为 gridsize + 2。因此,KAN 卷积总共有 K^2(gridsize + 2) 个参数,而普通卷积只有 K^2。

3.3 CKAN 在轴承故障诊断中的应用

通过前面的对比实验可以看出,基于 KAN 的卷积网络比传统卷积网络在轴承故障分类任务上效果会好一些,但是训练时间较长。后续可以考虑融合其他模块,做进一步优化;同时基础的 KAN 层完全可以替代分类任务中的全连接层,效果显著,可以在其他数据集上做进一步的对比实验。总的来说,KAN 卷积的实现是一个很有前景的想法,在轴承故障诊断任务上也存在一定的应用前景,值得我们去探索!

3 轴承故障数据的预处理

3.1 导入数据

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

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

上图是数据的读取形式以及预处理思路

3.2 数据预处理,制作数据集

4 基于 Pytorch的 KANConv 的轴承故障诊断

4.1 定义 KANConv 分类网络模型,设置参数,训练模型

100个epoch,训练集、验证集准确率98%,用改进 KAN 卷积 网络分类效果显著,模型能够充分提取轴承故障信号中的故障特征,收敛速度快,性能优越,精度高,效果明显!(代价是运行时间比传统CNN网络要慢)

4.2 模型评估

准确率、精确率、召回率、F1 Score

故障十分类混淆矩阵:

代码、数据如下:

对数据集和代码感兴趣的,可以关注最后一行

# 加载数据
import torch
from joblib import dump, load
import torch.utils.data as Data
import numpy as np
import pandas as pd
import torch
import torch.nn as nn
# 参数与配置
torch.manual_seed(100)  # 设置随机种子,以使实验结果具有可重复性
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
 
#代码和数据集:https://mbd.pub/o/bread/ZpaWmpdy

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

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

相关文章

Git使用规范及命令

文章目录 一、Git工作流二、分支管理三、Git命令操作规范1. 切到develop分支,更新develop最新代码2. 新建feature分支,开发新功能3. 完成feature分支,合并到develop分支4. 当某个版本所有的 feature 分支均合并到 develop 分支,就…

【漏洞复现】大华 DSS 数字监控系统 user_edit.action 信息泄露漏洞

0x01 产品简介 大华 DSS 数字监控系统是大华开发的一款安防视频监控系统,拥有实时监视、云台操作、录像回放、报警处理、设备管理等功能。 0x02 漏洞概述 大华 DSS 数字监控系统 user_edit.action 接囗处存在信息泄露漏洞。未经身份验证的远程攻击者可利用此漏洞…

无意间看到男主眼神,这也太有感觉了吧❗❗

2025即将首播《藏海传》中国大陆剧情/奇幻/古装共40集。 原本,稚奴身为大雍国钦天监监正蒯铎之子,背负着家族血仇。 历经十年沉默与磨砺,他化名为藏海(肖战 饰),重返京城。 他凭借卓越的营造技艺和深谙纵…

gitbook安装 报错处理 windows系统

首先需要有nodejs。若没有,则去nodejs官网下载nodejs安装。 然后安装gitbook。命令如下:这是在linux系统的命令。 $ npm config set registry http://registry.npm.taobao.org #设置一下淘宝镜像(非必选) $ npm install gitbo…

B站稿件生产平台高可用建设分享

背景 B站作为国内领先的内容分享平台,其核心功能之一便是支持UP主们创作并分享各类视频内容。UP主稿件系统作为B站内容生产的关键环节,承担着从内容创作到发布的全过程管理。为了满足不同创作者的需求,B站提供了多种投稿渠道,包括…

深入探讨 Android 的 View 显示过程与源码分析

文章目录 1. 探讨 Android 的 View 显示过程1.1. onFinishInflate1.2. onAttachedToWindow1.3. onMeasure1.4. onSizeChanged1.5. onLayout1.6. onDraw 2. 系统代码分析1.1. onFinishInflate1.2. onAttachedToWindow1.3. onMeasure1.4. onSizeChanged1.5. onLayout1.6. onDraw …

基于深度学习的端到端语音识别时代

随着深度学习的发展,语音识别由DNN-HMM时代发展到基于深度学习的“端到端”时代,这个时代的主要特征是代价函数发生了变化,但基本的模型结构并没有太大变化。总体来说,端到端技术解决了输入序列长度远大于输出序列长度的问题。 采…

探索k8s集群的存储卷 emptyDir hostPath nfs

目录 一 含义 查看支持的存储卷类型 emptyDir存储卷 1.1 特点 1.2 用途 1.3部署 二、hostPath存储卷 一 含义 容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题。首先,当容器崩溃时,kubelet 会重…

py管理系统

self. 才是属性被保存,能够被实例化使用,否则只是局部变量 pop: 使用索引删除元素,并且需要返回被删除的元素。默认删除列表中的最后一个元素。 remove: 按值删除元素,不需要知道索引。如果列表中有多个相同…

rtos最小任务切换的实现 keil软件仿真 stm32 PendSV

最小任务切换的实现 本例子实现了一个 rtos 最小的任务切换功能,使用 keil 仿真功能,在模拟的 stm32f103 的器件上实现了使用 PendSV 中断切换线程的效果。 git 源码仓库:https://github.com/yutianos/rtos-little 本文链接:csdn…

VMware虚拟机安装Ubuntu-Server版教程(超详细)

目录 1. 下载2. 安装 VMware3. 安装 Ubuntu3.1 新建虚拟机3.2 安装操作系统 4. SSH方式连接操作系统4.1 好用的SSH工具下载:4.2 测试SSH连接 5. 开启root用户登录5.1 设置root用户密码5.2 传统方式切换root用户5.3 直接用root用户登录5.4 SSH启用root用户登录 6. 安…

Java-----Comparable接口和Comparator接口

在Java中&#xff0c;我们会经常使用到自定义类&#xff0c;那我们如何进行自定义类的比较呢? 1.Comparable接口 普通数据的比较 int a10;int b91;System.out.println(a<b); 那自定义类型可不可以这样比较呢&#xff1f;看一下代码 我们发现会报错&#xff0c;因为自定义…

OSError: [Errno 117] Structure needs cleaning

一 问题描述 OSError: [Errno 117] Structure needs cleaning: /tmp/pymp-wafeatri 我重新使用SSH登录也会提示这个类似问题 二 解决方法 2.1 尝试删除报错的文件 &#xff08;想直接看最终解决方法的可忽略此处&#xff09; sudo rm -rf /tmp/pymp-wafeatri 此种方法只能保证…

C++:SLT容器-->vector

C:SLT容器-->vector 1. vector 构造函数2. vector 赋值操作3. vector 容器和大小4. vector 插入和删除5. vector 数据存取6. vector 互换容器7. vector 预留空间 vector数据结构和数组非常相似&#xff0c;也称为单端数组。不同的是数组是静态空间&#xff0c;而vector可以动…

深入分析 Android Service (三)

文章目录 深入分析 Android Service (三)1. Service 与 Activity 之间的通信2. 详细示例&#xff1a;通过绑定服务进行通信2.1 创建一个绑定服务2.2 绑定和通信 3. 优化建议4. 使用场景5. 总结 深入分析 Android Service (三) 1. Service 与 Activity 之间的通信 在 Android …

网页截图并添加美观外壳:无需PS轻松实现的方法

在日常生活和工作中&#xff0c;我们经常需要截取网页的屏幕快照&#xff0c;以便于分享、保存或用于其他用途。尽管许多人认为使用Photoshop&#xff08;PS&#xff09;是最佳选择&#xff0c;但实际上&#xff0c;有许多更简单、快捷的方法可以帮助我们实现这一目标&#xff…

【C++题解】1446. 人口增长问题

问题&#xff1a;1446. 人口增长问题 类型&#xff1a;循环应用 题目描述&#xff1a; 我国现有 x 亿人口&#xff0c;按照每年 0.1% 的增长速度&#xff0c;n 年后将有多少人&#xff1f; 输入&#xff1a; 一行&#xff0c;包含两个整数 x 和 n &#xff0c;分别是人口基…

Oracle导出clob字段到csv

使用UTL_FILE ref: How to Export The Table with a CLOB Column Into a CSV File using UTL_FILE ?(Doc ID 1967617.1) --preapre data CREATE TABLE TESTCLOB(ID NUMBER, MYCLOB1 CLOB, MYCLOB2 CLOB ); INSERT INTO TESTCLOB(ID,MYCLOB1,MYCLOB2) VALUES(1,Sample row 11…

Go 优雅的爬虫框架 - Colly

Colly 是一款用 Go 语言编写的优雅网络爬虫框架,速度快、灵活且易于使用 关键特性包括: 线程安全。用户友好的 API。支持 XHR(Ajax)和 WebSocket。缓存和持久化。支持速度限制和分布式爬取。强大的可扩展性。colly采集器配置 AllowedDomains: 设置收集器使用的域白名单,设…

rtl8723DU移植 android4.4 4418

一、 linux 的移植。 首先编译一遍确保没有问题。 将驱动拷贝到 driver/net/wireless 目录下。 使用的是&#xff1a; 改写 makefile Kconfig 去改写 8723 的makefile 设置menuconfig 使能固有的 库。 使能USB部分 ieee 部分 编译一遍 有报错。 解决&#xff1a; …