Python环境下基于注意力机制的小样本轴承故障诊断

传统的基于特征提取与分类相结合的轴承智能诊断算法,对信号处理要求很高的专家经验,既费时又缺乏通用性。基于深度学习的智能轴承故障诊断方由于具有强大的特征提取能力,避免了繁琐复杂的特征提取工作,但是大多数研究都是在标准数据集下进行的,这意味着模型能够使用足量的数据进行训练,因此不会出现由于缺乏训练数据而导致深度模型诊断错误或过拟合问题。但是,在某些实际情况下,很难收集到足够的数据,例如当突然的故障发生时,在系统关闭前只能获取少量样本,来自这些故障的数据是稀缺的。出现这种情况的原因有几个:

(1)由于严重的后果不允许行轴承陷入故障状态;(2)大多数轴承故障发生缓慢,并遵循退化路径,使得轴承的故障退化可能需要数月甚至数年,这使得收集相关数据集变得困难;(3)机械设备的工况非常复杂,收集和标记足够各种工况下的训练样本是不现实的;(4)在实际应用中,故障类别和工作条件通常是不平衡的。以上数据不足或数据不平衡问题,故障样本都比较少,即为小样本问题。

为了解决小样本轴承故障诊断问题,现有的方法主要分为两个方面:

(1)数据增强;(2)选择特定算法。对于传统的数据增强方法而言,这些方法能增加数据量,但数据多样性没有发生质的改变,因此诊断效果有待提升;同时,这些方法可能引入噪声样本,也可能剔除重要的样本信息。生成对抗网络的出现弥补了上述方法的不足,用于轴承故障诊断获得了良好的结果,但目前它们都是基于一维信号的故障诊断方法,不能充分学习GAN及其变种图像生成的能力,生成样本质量不高和多样性差;同时,没有充分利用振动信号的时域和频域信息。对于现有的特定小样本轴承故障诊断算法而言,这些方法过分依赖丰富的人工经验,以及出现新的故障类型时,不能直接进行诊断,而需要收集足够的新的故障类型样本,输入模型重新训练再进行诊断。

鉴于此,提出一种基于注意力机制的小样本轴承故障诊断方法,运行环境为Python,采用Pytorch深度学习模块,采用模块如下:

import torch
import torch.nn as nn
import numpy as np
from datasave import train_loader, test_loader
from early_stopping import EarlyStopping
from label_smoothing import LSR
from oneD_Meta_ACON import MetaAconC
import time
from torchsummary import summary
from adabn import reset_bn, fix_bn

运行结果如下:

epoch: 70, Train Loss: 0.5524, Train Acc: 1.0000, Test Loss: 0.5565, Test Acc: 1.0000
EarlyStopping counter: 2 out of 10
epoch: 71, Train Loss: 0.5525, Train Acc: 1.0000, Test Loss: 0.5552, Test Acc: 1.0000
Validation loss decreased (0.555630 --> 0.555175). Saving model ...
epoch: 72, Train Loss: 0.5519, Train Acc: 1.0000, Test Loss: 0.5584, Test Acc: 1.0000
EarlyStopping counter: 1 out of 10
epoch: 73, Train Loss: 0.5517, Train Acc: 1.0000, Test Loss: 0.5550, Test Acc: 1.0000
Validation loss decreased (0.555175 --> 0.555048). Saving model ...
epoch: 74, Train Loss: 0.5514, Train Acc: 1.0000, Test Loss: 0.5544, Test Acc: 1.0000
Validation loss decreased (0.555048 --> 0.554380). Saving model ...
epoch: 75, Train Loss: 0.5516, Train Acc: 1.0000, Test Loss: 0.5560, Test Acc: 1.0000
EarlyStopping counter: 1 out of 10
epoch: 76, Train Loss: 0.5508, Train Acc: 1.0000, Test Loss: 0.5542, Test Acc: 1.0000
Validation loss decreased (0.554380 --> 0.554152). Saving model ...
epoch: 77, Train Loss: 0.5507, Train Acc: 1.0000, Test Loss: 0.5546, Test Acc: 1.0000
EarlyStopping counter: 1 out of 10
epoch: 78, Train Loss: 0.5506, Train Acc: 1.0000, Test Loss: 0.5546, Test Acc: 1.0000
EarlyStopping counter: 2 out of 10
epoch: 79, Train Loss: 0.5505, Train Acc: 1.0000, Test Loss: 0.5541, Test Acc: 1.0000
Validation loss decreased (0.554152 --> 0.554113). Saving model ...
epoch: 80, Train Loss: 0.5503, Train Acc: 1.0000, Test Loss: 0.5536, Test Acc: 1.0000
Validation loss decreased (0.554113 --> 0.553636). Saving model ...
epoch: 81, Train Loss: 0.5501, Train Acc: 1.0000, Test Loss: 0.5534, Test Acc: 1.0000
Validation loss decreased (0.553636 --> 0.553374). Saving model ...
epoch: 82, Train Loss: 0.5501, Train Acc: 1.0000, Test Loss: 0.5536, Test Acc: 1.0000
EarlyStopping counter: 1 out of 10
epoch: 83, Train Loss: 0.5500, Train Acc: 1.0000, Test Loss: 0.5542, Test Acc: 1.0000
EarlyStopping counter: 2 out of 10
epoch: 84, Train Loss: 0.5507, Train Acc: 1.0000, Test Loss: 0.5554, Test Acc: 1.0000
EarlyStopping counter: 3 out of 10
epoch: 85, Train Loss: 0.5499, Train Acc: 1.0000, Test Loss: 0.5531, Test Acc: 1.0000
Validation loss decreased (0.553374 --> 0.553104). Saving model ...
epoch: 86, Train Loss: 0.5499, Train Acc: 1.0000, Test Loss: 0.5527, Test Acc: 1.0000
Validation loss decreased (0.553104 --> 0.552698). Saving model ...
epoch: 87, Train Loss: 0.5498, Train Acc: 1.0000, Test Loss: 0.5531, Test Acc: 1.0000
EarlyStopping counter: 1 out of 10
epoch: 88, Train Loss: 0.5493, Train Acc: 1.0000, Test Loss: 0.5532, Test Acc: 1.0000
EarlyStopping counter: 2 out of 10
epoch: 89, Train Loss: 0.5495, Train Acc: 1.0000, Test Loss: 0.5523, Test Acc: 1.0000
Validation loss decreased (0.552698 --> 0.552310). Saving model ...
epoch: 90, Train Loss: 0.5494, Train Acc: 1.0000, Test Loss: 0.5531, Test Acc: 1.0000
EarlyStopping counter: 1 out of 10
epoch: 91, Train Loss: 0.5492, Train Acc: 1.0000, Test Loss: 0.5538, Test Acc: 1.0000
EarlyStopping counter: 2 out of 10
epoch: 92, Train Loss: 0.5492, Train Acc: 1.0000, Test Loss: 0.5529, Test Acc: 1.0000
EarlyStopping counter: 3 out of 10
epoch: 93, Train Loss: 0.5491, Train Acc: 1.0000, Test Loss: 0.5526, Test Acc: 1.0000
EarlyStopping counter: 4 out of 10
epoch: 94, Train Loss: 0.5489, Train Acc: 1.0000, Test Loss: 0.5529, Test Acc: 1.0000
EarlyStopping counter: 5 out of 10
epoch: 95, Train Loss: 0.5487, Train Acc: 1.0000, Test Loss: 0.5528, Test Acc: 1.0000
EarlyStopping counter: 6 out of 10
epoch: 96, Train Loss: 0.5484, Train Acc: 1.0000, Test Loss: 0.5528, Test Acc: 1.0000
EarlyStopping counter: 7 out of 10
epoch: 97, Train Loss: 0.5485, Train Acc: 1.0000, Test Loss: 0.5517, Test Acc: 1.0000
Validation loss decreased (0.552310 --> 0.551687). Saving model ...
epoch: 98, Train Loss: 0.5484, Train Acc: 1.0000, Test Loss: 0.5514, Test Acc: 1.0000
Validation loss decreased (0.551687 --> 0.551363). Saving model ...
epoch: 99, Train Loss: 0.5484, Train Acc: 1.0000, Test Loss: 0.5515, Test Acc: 1.0000
EarlyStopping counter: 1 out of 10
epoch: 100, Train Loss: 0.5483, Train Acc: 1.0000, Test Loss: 0.5524, Test Acc: 1.0000
EarlyStopping counter: 2 out of 10
epoch: 101, Train Loss: 0.5487, Train Acc: 1.0000, Test Loss: 0.5549, Test Acc: 1.0000
EarlyStopping counter: 3 out of 10
epoch: 102, Train Loss: 0.5507, Train Acc: 1.0000, Test Loss: 0.5597, Test Acc: 1.0000
EarlyStopping counter: 4 out of 10
epoch: 103, Train Loss: 0.5495, Train Acc: 1.0000, Test Loss: 0.5540, Test Acc: 1.0000
EarlyStopping counter: 5 out of 10
epoch: 104, Train Loss: 0.5586, Train Acc: 0.9972, Test Loss: 0.5980, Test Acc: 1.0000
EarlyStopping counter: 6 out of 10
epoch: 105, Train Loss: 0.5563, Train Acc: 1.0000, Test Loss: 0.6087, Test Acc: 0.9900
EarlyStopping counter: 7 out of 10
epoch: 106, Train Loss: 0.5541, Train Acc: 1.0000, Test Loss: 0.6079, Test Acc: 1.0000
EarlyStopping counter: 8 out of 10
epoch: 107, Train Loss: 0.5515, Train Acc: 1.0000, Test Loss: 0.5953, Test Acc: 0.9967
EarlyStopping counter: 9 out of 10
epoch: 108, Train Loss: 0.5503, Train Acc: 1.0000, Test Loss: 0.5740, Test Acc: 0.9967
EarlyStopping counter: 10 out of 10
Early stopping
time:1384.973 s

完整代码:
Python环境下基于注意力机制的小样本轴承故障诊断-今日头条 (toutiao.com)

擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。

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

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

相关文章

共谋企业出海新篇章纷享销客荣获数字中国企业峰会“卓越成果奖”

3月9日,2024数字中国企业峰会在杭州西湖中维香溢大酒店成功举办,众多数字化领域专家、知名企业 CIO 代表到场。峰会旨在推动数字化转型与创新发展,为企业出海和国际合作搭建交流与合作的平台。本次峰会的颁奖环节,纷享销客凭借其卓…

【已解决】MySQL:常用的除法运算+精度处理+除数为0处理

目录 问题现象: 问题分析: 拓展: 1、除法运算: 拓展:MySQL中常用的几种除法运算 1、取整除法 2、浮点数除法 3、取余除法 4、向上取整除法 5、向下取整除法 2、运算结果的精度处理 1.1、浮点数 1.2、总位数 1.3、…

android 怎么自定义view

首先了解view的绘制流程: 所以onmeasure ---测量view onlayout---确定view大小----》所以继承ViewGroup必须要重写onlayout,确定子view 而onDraw----是继承view时候需要操作的。 所以:自定义ViewGroup一般是利用现有的组件根据特定的布局方式来组成新的组件。 自定义Vi…

python打包时遇见第三方包有隐藏依赖或者出现依赖错误

使用pyinstaller 打包成exe 文件步骤: 1.创建虚拟环境,并激活虚拟环境 #创建虚拟环境 python -m venv myenv #激活虚拟环境(windows) myenv\Scripts\activate2.导出需要的依赖 pip freeze > requirements.txt 或者 pip list …

AutoCAD 2020:三维建模与渲染,设计未来的建筑蓝图

AutoCAD 2020是一款功能强大且广泛应用的计算机辅助设计软件,它以其卓越的性能和丰富的功能,满足了机械、建筑、家居、纺织等诸多行业的设计需求。以下是AutoCAD 2020的一些主要功能介绍: 保存和安装优化:AutoCAD 2020在性能上进…

观成科技-基于自适应学习的人工智能加密流量检测技术

1.前言 人工智能技术的广泛应用正在深刻改变我们的生活。在网络安全领域,基于机器学习的检测技术也应用在许多场景中。随着信息技术的迅猛发展和数字化转型的深入推进,加密技术逐渐成为保障网络安全和数据隐私的核心手段,而基于机器学习的检…

每日五道java面试题之mybatis篇(四)

目录: 第一题. 映射器#{}和${}的区别第二题. 模糊查询like语句该怎么写?第三题. 在mapper中如何传递多个参数?第四题. Mybatis如何执行批量操作第五题 MyBatis框架适用场景 第一题. 映射器#{}和${}的区别 #{}是占位符,预编译处理;${}是拼接…

windows 安装cuda 11.2过程记录

参考: https://blog.csdn.net/m0_45447650/article/details/123704930 https://zhuanlan.zhihu.com/p/99880204?from_voters_pagetrue 在显卡驱动被正确安装的前提下,在命令行里输入nvidia-smi.exe 下载CUDA Toolkit: https://developer.nvidia.com/…

CrossEntropyLoss 和NLLLoss的关系

交叉熵损失在做一件什么事? 看公式: x是预测(不需要softmax归一化),y是label, N是batch维度的数量,交叉熵损失,干了三件事. 1. 对输入在类别维度求softmax 2. 多softmax后的数,求log 3. 对(样本数, 类别数)为shape的tensor计算NLLLoss. 其中,NLLloss做的就是log取负, 和o…

java入门 - 规范你的代码注释

java基础语法-代码注释 注释只是为了提高可读性,不会被计算机编译。代码注释是架起程序设计者与程序阅读者之间的通信桥梁,最大限度的提高团队开发合作效率。也是程序代码可维护性的重要环节之一。 开发中注释可以分为三种方式: 行注释块注释类/方法注释…

Linux 大页内存 Huge Pages 虚拟内存

Linux 大页内存 Huge Pages 虚拟内存 - 秋来叶黄 - 博客园 (cnblogs.com) Linux为什么要有大页内存?为什么DPDK必须要设置大页内存?这都是由系统架构决定的。一开始为了解决一个问题,设计了对应的方案,随着事物的发展&#xff0c…

Splitpanes拆分窗格插件使用

目录 基本用法 纵向排列 遍历渲染 动态拆分宽度 项目开发中用到了拆分窗格(就是下面的效果,可以拆分网页,我们项目通常都是用左右两块拆分,可以通过拖动图标进行左右拖动),于是就发现了一个很好用的插件:Splitpane…

上位机图像处理和嵌入式模块部署(qmacvisual畸变矫正)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 大部分同学在开始做计算机图像的时候,是没有意识到畸变矫正这个问题的。当然不仅仅是畸变矫正,很多同学还会忽略光源的问题…

python异常:Exception、BaseException接收异常,并打印异常信息msg

except IOEerror 只能接收到 IO 类型的错误,对于抛出的 NameError 类型的错误,在 Python 中所有的异常类都继承 Exception,所以我们可以使用它来接收所有的异常。 1.Exception接收异常 源码: open("test1.py",r) pr…

4款智能文章生成器推荐,为你创作文章效率高

智能文章生成器的出现为创作者带来了很多方便,尤其是在当今信息爆炸的时代,内容创作已经成为许多人日常工作中不可或缺的一部分。无论是博客、新闻报道、营销文案还是学术论文,高质量的文章往往需要耗费大量的时间和精力来撰写。但有了智能文…

固态硬盘格式化后怎么恢复 固态硬盘被格式化后如何恢复

你知道吗,固态硬盘被格式化后,还有一线生机可以让你把数据找回来!固态硬盘被格式化后如何恢复?不要慌张,我们来一步一步地看看该怎么做。首先,你需要知道格式化并不是真正意义上的删除数据,而是把硬盘上的文件系统清空,让数据变得不可见。所以,只要你没有在格式化后往…

Linux —— 定时任务(sleep、crontab、at)

目录 1、使用 sleep 来完成定时任务 2、使用 crontab 来进行定时任务 3、使用 at 来执行单次的定时任务 1、使用 sleep 来完成定时任务 sleep n 等待 n 秒再继续往后执行 usleep n 等待 n 微秒再继续往后执行(1 秒等于 1 000 000 微秒&#xf…

uniapp使用Echarts图表H5显示正常 打包app显示异常

uniapp使用Echarts在H5页面调试 调试完在H5正常显示 然后通过安卓机调试的时候 发现直接空白了 还有这个爆错 Initialize failed: invalid dom 我有多个图表、图表是通过v-for循环出来的 解决方案 原来是yarn直接安装Echarts 然后改成本地JS文件引入 gitbub文件地址 — dist/…

二十几岁的我们:在旷野中找寻自我

二十几岁,这是一个充满变数、充满机遇和挑战的年纪。它如同一片辽阔的旷野,每个人都在其中寻找自己的方向,摸索着自己的道路。这是一个既令人兴奋又令人迷茫的年纪,我们穿着不同的鞋子,注定要走不同的路。 在这个年纪里…

面向对象(下)

目录 01、static1.1、static的使用1.2、static应用举例1.3、单例(Singleton)设计模式 02、main方法的语法03、类的成员之四:代码块04、关键字:final05、抽象类与抽象方法5.1、多态的应用:模板方法设计模式(TemplateMethod) 06、接口(interfac…