【小波包能量谱+原型网络】基于增强EWPT特征和CNN‑LSTM原型网络的滚动轴承故障诊断(PyTorch)
算法提出了一种基于增强小波包变换特征与原型网络的少样本轴承故障诊断方法。首先对原始振动信号进行滑动窗分帧,并对每个窗口信号执行三级小波包分解,提取各子带的统计特征(能量、标准差、均值绝对值、最大值、偏度、峰度)以及能量比率,构成56维特征向量。随后构建情景训练集,采用5路5射击的元学习范式,利用包含卷积层和长短时记忆网络的编码器将特征映射为嵌入向量,通过计算查询样本与各类别原型(支撑集嵌入均值)之间的欧氏距离进行分类。在CWRU数据集的10类故障状态上进行训练与评估,最终取得了96.95%的测试准确率,证明了提出方法在少量标注样本下对滚动轴承健康状态的有效识别能力。
算法步骤
数据预处理与滑动窗分割:读取CWRU数据集中10类工况的振动信号,采用长度为2048、步长为1024的滑动窗口将长序列信号切分为若干等长的短片段。
增强小波包变换特征提取:对每个窗口信号进行三级db4小波包分解,获取8个子带的分解系数;对每个子带系数计算能量、标准差、均值绝对值、最大值、偏度、峰度六项统计量,并计算该子带能量占所有子带总能量的比率,将7个特征串联形成56维特征向量,并对其进行样本内标准化。
情景数据集构建:将提取的特征与对应标签按8∶1∶1的比例划分为训练集、验证集和测试集,分别封装为情景采样数据集;每个情节随机选取5个类别,每类随机抽取5个样本作为支撑集、15个样本作为查询集,并可选择添加高斯噪声增强训练样本。
编码器网络前向计算:将输入特征序列(56维)视为一维信号,经两层一维卷积和自适应平均池化后,输入两层LSTM网络,取最后一个时间步的输出经全连接层映射为128维嵌入向量。
原型计算与分类:在支撑集上,对同一类别的嵌入向量求平均得到该类原型;计算查询集嵌入与所有原型之间的欧氏距离平方,取负值作为分类对数几率,通过交叉熵损失优化模型参数。
训练与早停:采用AdamW优化器和余弦退火学习率调度,进行1000个情节的训练,每50个情节在验证集上评估一次,若验证准确率连续30次不提升则提前停止训练,并保存最佳模型。
测试与可视化:加载最佳模型在测试集上运行200个情节,计算平均准确率与标准差;同时利用t‑SNE对测试情节中的嵌入向量进行降维可视化,观察类别聚集效果。
import os
import numpy as np
import torch
import torch.nn as nn
import torch.nn.functional as F
import pywt
from sklearn.manifold import TSNE
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
from collections import defaultdict
import warnings
warnings.filterwarnings('ignore')
# ---------------------------- 1. 数据预处理与EWPT特征提取 ---------------------------------
def sliding_window_slice(signal, window_len=2048, step=1024):
samples = []
n = (len(signal) - window_len) // step + 1
for i in range(n):
start = i * step
samples.append(signal[start:start+window_len])
return np.array(samples)
def statistical_features(coeffs):
e = np.sum(coeffs**2)
std = np.std(coeffs)
mean_abs = np.mean(np.abs(coeffs))
max_abs = np.max(np.abs(coeffs))
if std != 0:
skew = np.mean(((coeffs - np.mean(coeffs)) / std)**3)
kurt = np.mean(((coeffs - np.mean(coeffs)) / std)**4) - 3.0
else:
skew = kurt = 0.0
# 增加能量比率(相对于总能量)作为额外特征
return [e, std, mean_abs, max_abs, skew, kurt]

从训练与测试结果可以看出,提出算法在CWRU滚动轴承故障数据集上取得了优异的少样本分类性能。具体而言,经过1000个情节(episode)的训练后,模型在验证集上的最高准确率达到98.37%,最终测试集上的平均准确率为96.95%,标准差为3.98%。训练过程中损失函数稳定下降,训练准确率多次达到100%,表明模型能够充分拟合训练任务中的支撑集样本。验证准确率随训练进度整体呈上升趋势,且波动幅度逐渐减小,说明模型具有良好的泛化能力,未出现明显的过拟合现象。值得注意的是,在5-way 5-shot的设定下,测试准确率接近97%,显著高于随机猜测的20%,验证了所提出的「EWPT特征提取 + CNN-LSTM编码器 + 原型网络」框架在轴承故障诊断中的有效性。此外,特征维度仅56维,模型参数量较小,训练效率较高,适合实际工程中标注样本稀缺的场景。
如果你对信号滤波/降噪,机器学习/深度学习,时间序列预分析/预测,设备故障诊断/缺陷检测/异常检测有疑问,或者需要论文思路上的建议,欢迎学术咨询
担任《MSSP》《中国电机工程学报》《宇航学报》《控制与决策》等期刊审稿专家,擅长领域:信号滤波/降噪,机器学习/深度学习,时间序列预分析/预测,设备故障诊断/缺陷检测/异常检测
更多推荐


所有评论(0)