- 数据集:CRWU数据集
- 框架:pytorch
一、数据集
CWRU轴承数据集采集实验台由1.5kW的电机、驱动端轴承、风扇端轴承、扭矩传感器、测功机、加速度传感器和电子控制器组成。待检测的轴承支撑着电动机的转轴,驱动端轴承型号为SKF6205,风扇端轴承型号为SKF6203,本文中使用驱动端轴承数据集。通过电火花加工模拟轴承的多种健康状况,电动机风扇端和驱动端的轴承座上方各放置一个加速度传感器用来采集故障轴承的振动加速度信号。振动信号通过16通道的数据记录仪采集得到,采样频率为12kHz,功率和转速通过扭矩传感器测得。
采样率12K的部分数据
二、VMD分解
变分模态分解(variational mode decomposition)VMD是2014年提出的一种非递归信号处理方法,通过将时间序列数据分解为一系列具有有限带宽的本征模态函数(IMF),迭代搜寻变分模态的最优解。VMD可以自适应更新各IMF的最优中心频率和带宽。
相较于EMD,VMD具有更强大的性能:在进行EMD分解时,我们需要利用信号的极大值和极小值来计算包络,而信号的极值很有可能收到噪声干扰,因此EMD对噪声比较敏感;EMD还存在端点效应的问题,即在信号的端点处由于没有前后帧的信息,求得的包络面可能不准确,在后期分解的过程中,可能会得到不准确的IMF分量。而VMD不存在这方面问题,其具有较好抗噪能力,能解决频率混叠问题。
在python中实现
from vmdpy import VMD
import numpy as np
signal = np.random.rand(1000)
alpha = 2000 # 带宽约束参数
tau = 0 # 噪声容忍度参数
DC = 0 # 直流分量参数
K = 4 # 模态数量参数
init = 1 # 初始频率估计方法参数
u, u_hat, omega = VMD(signal, alpha, tau, K, DC, init, tol)
print(u.shape)
# (4, 1000)
三、模型架构
四、效果评估
五、代码获取
感兴趣的朋友可以关注最后一行
import numpy as np
import pandas as pd
from scipy.io import loadmat
from sklearn.utils import shuffle
import os
from matplotlib import pyplot as plt
import torch
import time
from torch import nn
import torch.nn.functional as F
from torch.utils.data import TensorDataset, DataLoader
from pytorch_lightning import seed_everything
import seaborn as sns
from sklearn import metrics
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
%matplotlib inline
seed_everything(100) # 设置随机种子,以使实验结果具有可重复性
%% https://mbd.pub/o/bread/mbd-ZpmUmJ9p