目錄
往期精彩內(nèi)容:
前言
模型整體結(jié)構(gòu)
1?變分模態(tài)分解VMD的Python示例
2?軸承故障數(shù)據(jù)的預(yù)處理
2.1 導(dǎo)入數(shù)據(jù)
2.2 故障VMD分解可視化
2.3 故障數(shù)據(jù)的VMD分解預(yù)處理
3?基于VMD-CNN-BiGRU-Attenion的軸承故障診斷分類
3.1 定義VMD-CNN-BiGRU-Attenion分類網(wǎng)絡(luò)模型
3.2 設(shè)置參數(shù),訓(xùn)練模型
3.3 模型評估
代碼、數(shù)據(jù)如下:
往期精彩內(nèi)容:
Python-凱斯西儲(chǔ)大學(xué)(CWRU)軸承數(shù)據(jù)解讀與分類處理
Python軸承故障診斷 (一)短時(shí)傅里葉變換STFT
Python軸承故障診斷 (二)連續(xù)小波變換CWT_pyts 小波變換 故障-CSDN博客
Python軸承故障診斷 (三)經(jīng)驗(yàn)?zāi)B(tài)分解EMD_軸承診斷 pytorch-CSDN博客
Pytorch-LSTM軸承故障一維信號分類(一)_cwru數(shù)據(jù)集pytorch訓(xùn)練-CSDN博客
Pytorch-CNN軸承故障一維信號分類(二)-CSDN博客
Pytorch-Transformer軸承故障一維信號分類(三)-CSDN博客
Python軸承故障診斷 (四)基于EMD-CNN的故障分類-CSDN博客
Python軸承故障診斷 (五)基于EMD-LSTM的故障分類-CSDN博客
Python軸承故障診斷 (六)基于EMD-Transformer的故障分類-CSDN博客
Python軸承故障診斷 (七)基于EMD-CNN-LSTM的故障分類-CSDN博客
Python軸承故障診斷 (八)基于EMD-CNN-GRU并行模型的故障分類-CSDN博客
基于FFT + CNN - BiGRU-Attention 時(shí)域、頻域特征注意力融合的軸承故障識別模型-CSDN博客
基于FFT + CNN - Transformer 時(shí)域、頻域特征融合的軸承故障識別模型-CSDN博客
大甩賣-(CWRU)軸承故障診數(shù)據(jù)集和代碼全家桶-CSDN博客
Python軸承故障診斷 (九)基于VMD+CNN-BiLSTM的故障分類-CSDN博客
Python軸承故障診斷 (十)基于VMD+CNN-Transfromer的故障分類-CSDN博客
前言
本文基于凱斯西儲(chǔ)大學(xué)(CWRU)軸承數(shù)據(jù),進(jìn)行變分模態(tài)分解VMD的介紹與數(shù)據(jù)預(yù)處理,最后通過Python實(shí)現(xiàn)VMD-CNN-BiGRU-Attenion的時(shí)空特征融合多頭注意力機(jī)制對故障數(shù)據(jù)的分類。凱斯西儲(chǔ)大學(xué)軸承數(shù)據(jù)的詳細(xì)介紹可以參考下文:
Python-凱斯西儲(chǔ)大學(xué)(CWRU)軸承數(shù)據(jù)解讀與分類處理_cwru數(shù)據(jù)集時(shí)域圖-CSDN博客
模型整體結(jié)構(gòu)
模型整體結(jié)構(gòu)如下所示:
?
-
VMD分解:
-
輸入:軸承振動(dòng)信號
-
操作:通過VMD技術(shù)將原始信號分解成多個(gè)本征模態(tài)函數(shù)(IMF)
-
輸出:每個(gè)IMF表示不同頻率范圍內(nèi)的振動(dòng)成分
-
CNN特征提?。?/p>
-
輸入:VMD分解得到的IMFs
-
操作:對每個(gè)IMF進(jìn)行卷積和池化操作,提取局部特征
-
輸出:卷積池化后的特征表示,用于捕獲不同頻率下的振動(dòng)特征
-
BiGRU-Attention時(shí)序特征提?。?/p>
-
輸入:CNN提取的特征序列
-
操作:雙向GRU網(wǎng)絡(luò)學(xué)習(xí)序列信息,Attention機(jī)制關(guān)注重要的時(shí)序特征
-
輸出:經(jīng)BiGRU-Attention處理后的時(shí)序特征表示,具有更好的時(shí)序建模能力
-
特征增強(qiáng):
-
輸入:BiGRU-Attention提取的時(shí)序特征
-
操作:可以采用歸一化、降維、特征融合等方法對特征進(jìn)行增強(qiáng),提高模型性能和泛化能力
1?變分模態(tài)分解VMD的Python示例
第一步,Python 中 VMD包的下載安裝:
# 下載
pip install vmdpy
# 導(dǎo)入
from vmdpy import VMD
第二步,導(dǎo)入相關(guān)包進(jìn)行分解
import numpy as np
import matplotlib.pyplot as plt
from vmdpy import VMD
# -----測試信號及其參數(shù)--start-------------
t = np.linspace(0, 1, 1000)
signal = np.sin(2 * np.pi * 5 * t) + np.sin(2 * np.pi * 20 * t)
T = len(signal)
fs = 1/T
t = np.arange(1,T+1)/T
# alpha 懲罰系數(shù);帶寬限制經(jīng)驗(yàn)取值為抽樣點(diǎn)長度1.5-2.0倍.
# 懲罰系數(shù)越小,各IMF分量的帶寬越大,過大的帶寬會(huì)使得某些分量包含其他分量言號;
alpha = 2000
#噪聲容限,一般取 0, 即允許重構(gòu)后的信號與原始信號有差別。
tau = 0
#模態(tài)數(shù)量 分解模態(tài)(IMF)個(gè)數(shù)
K = 5
#DC 合成信號若無常量,取值為 0;若含常量,則其取值為 1
# DC 若為0則讓第一個(gè)IMF為直流分量/趨勢向量
DC = 0
#初始化ω值,當(dāng)初始化為 1 時(shí),均勻分布產(chǎn)生的隨機(jī)數(shù)
# init 指每個(gè)IMF的中心頻率進(jìn)行初始化。當(dāng)初始化為1時(shí),進(jìn)行均勻初始化。
init = 1
#控制誤差大小常量,決定精度與迭代次數(shù)
tol = 1e-7
# -----測試信號及其參數(shù)--end----------
# Apply VMD
# 輸出U是各個(gè)IMF分量,u_hat是各IMF的頻譜,omega為各IMF的中心頻率
u, u_hat, omega= VMD(signal, alpha, tau, K, DC, init, tol)
#得到中心頻率的數(shù)值
print(omega[-1])
# Plot the original signal and decomposed modes
plt.figure(figsize=(15,10))
plt.subplot(K+1, 1, 1)
plt.plot(t, signal, 'r')
plt.title("原始信號")
for num in range(K):
plt.subplot(K+1, 1, num+2)
plt.plot(t, u[num,:])
plt.title("IMF "+str(num+1))
plt.show()
?
2?軸承故障數(shù)據(jù)的預(yù)處理
2.1 導(dǎo)入數(shù)據(jù)
參考之前的文章,進(jìn)行故障10分類的預(yù)處理,凱斯西儲(chǔ)大學(xué)軸承數(shù)據(jù)10分類數(shù)據(jù)集:
?
train_set、val_set、test_set 均為按照7:2:1劃分訓(xùn)練集、驗(yàn)證集、測試集,最后保存數(shù)據(jù)
?
上圖是數(shù)據(jù)的讀取形式以及預(yù)處理思路
2.2 故障VMD分解可視化
第一步, 模態(tài)選取
根據(jù)不同K值條件下, 觀察中心頻率,選定K值;從K=4開始出現(xiàn)中心頻率相近的模態(tài),出現(xiàn)過分解,故模態(tài)數(shù) K 選為4。
?
第二步,故障VMD分解可視化
?
2.3 故障數(shù)據(jù)的VMD分解預(yù)處理
?
3?基于VMD-CNN-BiGRU-Attenion的軸承故障診斷分類
下面基于VMD分解后的軸承故障數(shù)據(jù),先通過CNN進(jìn)行卷積池化操作提取信號的特征,增加維度,縮短序列長度,然后再送入BiGRU-Attenion層提取時(shí)序特征,并對特征進(jìn)行增強(qiáng),實(shí)現(xiàn)CNN-BiGRU-Attenion的信號分類方法:
3.1 定義VMD-CNN-BiGRU-Attenion分類網(wǎng)絡(luò)模型
?
3.2 設(shè)置參數(shù),訓(xùn)練模型
?
50個(gè)epoch,準(zhǔn)確率將近99%,用VMD-CNN-BiGRU-Attenion網(wǎng)絡(luò)分類效果顯著,CNN-BiGRU-Attenion模型能夠充分提取軸承故障信號的空間和時(shí)序特征,收斂速度快,性能優(yōu)越,繼續(xù)調(diào)參可以進(jìn)一步提高分類準(zhǔn)確率。
注意調(diào)整參數(shù):
-
可以適當(dāng)增加CNN層數(shù)和隱藏層的維度,微調(diào)學(xué)習(xí)率;
-
調(diào)整BiGRU層數(shù)和維度數(shù),調(diào)整注意力維度數(shù),增加更多的 epoch (注意防止過擬合)
-
可以改變一維信號堆疊的形狀(設(shè)置合適的長度和維度)
3.3 模型評估
準(zhǔn)確率、精確率、召回率、F1 Score
?
故障十分類混淆矩陣:
?文章來源:http://www.zghlxwxcb.cn/news/detail-803575.html
代碼、數(shù)據(jù)如下:
?文章來源地址http://www.zghlxwxcb.cn/news/detail-803575.html
到了這里,關(guān)于Python軸承故障診斷 (11)基于VMD+CNN-BiGRU-Attenion的故障分類的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!