基于CWT与深度学习的轴承故障诊断:五种网络对比实战

发布时间:2026/10/29 17:15:49
基于CWT与深度学习的轴承故障诊断:五种网络对比实战 1. 从振动信号到二维图像这套故障诊断方案到底在解决什么问题轴承故障诊断这个方向做的人多但真正把信号处理和深度学习结合得干净利落的方案并不多。我最近用凯斯西储大学CWRU的轴承数据集把连续小波变换和五种不同的网络结构串起来跑了一遍完整的对比实验从数据预处理到模型训练再到结果分析踩了不少坑也积累了一些在常规论文里看不到的经验。这篇文章就把整个流程拆开讲清楚包括为什么选CWT而不是STFT为什么ResNet在故障诊断里比普通CNN更稳以及CNN-BiGRU和CNN-LSTM这两种时序组合到底该怎么选。先说清楚这套方案的核心逻辑。凯斯西储大学的数据集提供的是加速度传感器采集的一维振动信号采样频率有12kHz和48kHz两种故障类型包括内圈故障、外圈故障、滚动体故障每种故障还有不同的损伤直径0.007、0.014、0.021英寸等。传统做法是手工提取时域特征均方根、峭度、峰值因子或者频域特征FFT谱峰然后喂给SVM或者随机森林。这种做法在工况稳定时效果还行但一旦负载变化或者转速波动手工特征的表征能力就明显不够用了。连续小波变换的价值在于它能把一维时域信号转换成二维时频图同时保留时间分辨率和频率分辨率。这跟短时傅里叶变换有本质区别——STFT的窗口大小是固定的你选了多大的窗口时间分辨率和频率分辨率就固定死了。但CWT用的是可变尺度的小波基函数高频段用窄窗口保证时间定位精度低频段用宽窗口保证频率精度。轴承故障的冲击成分往往出现在高频段而转速相关的基频在低频段CWT这种自适应特性刚好匹配轴承故障信号的特点。把CWT时频图作为CNN的输入本质上是把故障诊断问题转化成了图像分类问题。这个思路不是我的原创但我在实操中发现很多人直接把CWT系数矩阵当成灰度图扔进网络效果并不理想。原因在于CWT系数矩阵的数值范围差异极大低频系数可能比高频系数大几个数量级如果不做适当的归一化和对数变换网络很难学到有效的特征。我后面会详细讲这个预处理步骤怎么做。五种网络结构的选择也有讲究。普通CNN作为基线结构简单训练快但对深层特征的提取能力有限。ResNet通过残差连接解决了深层网络的退化问题在故障诊断这种需要提取细微特征的任务上优势明显。CNN-SVM是把CNN当作特征提取器把全连接层的输出送给SVM做分类这种混合方案在小样本场景下往往比端到端的softmax分类更稳。CNN-BiGRU和CNN-LSTM则是引入时序建模能力因为振动信号本质上是时间序列故障冲击在时间轴上有特定的模式和周期性双向门控循环单元和长短期记忆网络能捕捉这种时序依赖关系。这套方案适合谁参考如果你正在做旋转机械故障诊断的课题或者想把信号处理和深度学习结合起来做工程落地这篇文章的流程和代码框架可以直接复用。如果你只是刚接触深度学习建议先把CNN和ResNet的基本原理搞清楚再来看CWT这部分否则容易在维度变换和参数配置上卡住。2. 凯斯西储大学数据集的加载与CWT时频图生成2.1 数据文件的组织方式与标签映射凯斯西储大学的数据集在官网上下载下来是一堆.mat文件命名规则一般是X号电机负载Y故障类型Z损伤直径.mat这种格式。我拿到手的第一件事不是急着写代码而是先把文件命名规则理清楚建立一个标签映射表。因为后面做多分类的时候标签的顺序直接影响到混淆矩阵的解读和分类报告的生成。我的做法是先用一个脚本遍历所有.mat文件提取文件名中的关键信息生成一个结构化的表格。表格包含四列文件路径、故障类型、损伤直径、电机负载。故障类型分为正常、内圈故障、外圈故障、滚动体故障四类。损伤直径有0.007、0.014、0.021、0.028英寸几种。电机负载有0、1、2、3马力四种。这里有个容易忽略的细节不同负载下的信号即使故障类型和损伤直径相同其幅值和频率特征也会有差异。如果你把所有负载的数据混在一起训练模型可能会学到负载相关的特征而不是故障相关的特征。我的建议是先把同一负载下的数据单独拿出来做实验确认模型能区分故障类型之后再逐步加入不同负载的数据做域适应或者数据增强。% 数据加载与标签生成示例 dataDir CWRU_Dataset/; files dir(fullfile(dataDir, *.mat)); numFiles length(files); labelTable cell(numFiles, 4); for i 1:numFiles fileName files(i).name; % 解析文件名中的故障类型和损伤直径 if contains(fileName, Normal) faultType Normal; diameter 0; elseif contains(fileName, InnerRace) faultType InnerRace; diameter extractDiameter(fileName); elseif contains(fileName, OuterRace) faultType OuterRace; diameter extractDiameter(fileName); elseif contains(fileName, Ball) faultType Ball; diameter extractDiameter(fileName); end labelTable{i, 1} fullfile(dataDir, fileName); labelTable{i, 2} faultType; labelTable{i, 3} diameter; labelTable{i, 4} extractLoad(fileName); end这段代码的关键在于extractDiameter和extractLoad这两个函数你需要根据实际的文件命名规则来写。我见过有人直接用文件序号来映射标签结果数据集的顺序一变标签就全乱了。这种低级错误在论文复现中特别常见一定要避免。2.2 连续小波变换的参数选择与实现细节CWT的核心参数有三个小波基函数、尺度范围、采样频率。小波基的选择直接影响到时频图的纹理特征。我在实验里对比了Morlet、Mexican hat和Daubechies三种小波基最后选了Morlet。原因很简单Morlet小波在时频域都有较好的局部化特性而且它的形状跟轴承故障冲击的衰减振荡波形很相似匹配度最高。尺度范围的选择需要根据采样频率和关注的频率区间来定。凯斯西储大学数据的采样频率是12kHz轴承故障的特征频率一般在1kHz到5kHz之间。根据CWT的尺度与频率的对应关系尺度a对应的近似频率是f fc * fs / a其中fc是小波基的中心频率fs是采样频率。对于Morlet小波中心频率大约在0.8125Hz左右归一化之后。所以如果你关注1kHz到5kHz的频率范围尺度范围大概在2到100之间。% CWT时频图生成 fs 12000; % 采样频率 signal data(1:2048); % 取2048个采样点 scales 1:1:128; % 尺度范围 waveletName morl; % Morlet小波 cwtCoeffs cwt(signal, scales, waveletName); % 对数变换与归一化 cwtCoeffs abs(cwtCoeffs); cwtCoeffs 20 * log10(cwtCoeffs eps); % 转dB加eps防止log0 cwtCoeffs (cwtCoeffs - min(cwtCoeffs(:))) / (max(cwtCoeffs(:)) - min(cwtCoeffs(:)));这里有几个实操中总结出来的经验。第一取2048个采样点是一个比较合适的窗口长度对应的时间大约是0.17秒足够覆盖几个完整的冲击周期。如果取太短时频图的频率分辨率不够取太长时频图会包含太多冗余信息增加计算量。第二对数变换这一步非常关键。CWT系数的动态范围可能达到10的4次方甚至更大直接归一化会导致高频细节被低频成分淹没。转成dB尺度之后高频和低频的贡献就均衡了。第三加eps防止log0是必须的我见过有人忘了加结果整个时频图全是NaN排查了半天才发现是这个问题。生成的时频图尺寸是128×2048这个尺寸对于CNN来说太大了。我的做法是先做降采样把时间轴从2048降到256频率轴保持128不变最终输入网络的图像尺寸是128×256。降采样的方法可以用简单的平均池化也可以用双线性插值。我试过两种方法对最终精度的影响不大但平均池化的计算速度更快。2.3 数据集划分与数据增强策略数据划分这块我采用的是按样本随机划分的方式训练集占70%验证集占15%测试集占15%。但这里有个坑如果你用的是重叠采样overlapping sampling也就是相邻样本之间有重叠那么随机划分会导致训练集和测试集之间存在信息泄漏。因为重叠部分的信号同时出现在训练集和测试集中模型相当于在测试集上看到了训练数据。我的解决方案是采用非重叠采样每个样本取2048个点相邻样本之间没有重叠。这样虽然样本数量会少一些但评估结果更可靠。如果你确实需要更多样本可以用数据增强来扩充而不是用重叠采样。数据增强方面我用了三种方法加性高斯白噪声、幅值缩放、时间平移。加性噪声的信噪比控制在10dB到30dB之间幅值缩放的系数在0.8到1.2之间时间平移的范围是正负50个采样点。这三种增强方式模拟了实际工况中传感器噪声、负载变化和转速波动的场景能有效提升模型的泛化能力。注意数据增强只在训练集上进行验证集和测试集必须保持原始状态。我见过有人在增强后的数据集上划分训练测试集结果测试精度虚高实际部署时性能大幅下降。3. 五种网络结构的搭建逻辑与关键参数3.1 普通CNN作为基线结构设计与训练配置普通CNN的结构我设计得比较简洁三个卷积块每个卷积块包含一个卷积层、一个批归一化层、一个ReLU激活层和一个最大池化层。卷积核大小都是3×3通道数分别是16、32、64。最后接一个全局平均池化层和一个全连接层输出类别数。为什么选3×3的卷积核VGG网络已经证明了两个3×3卷积核的感受野等价于一个5×5卷积核但参数更少非线性更强。对于128×256的输入图像三层3×3卷积加上池化感受野已经足够覆盖时频图中的局部纹理特征。% 普通CNN结构定义 layers [ imageInputLayer([128 256 1], Name, input) convolution2dLayer(3, 16, Padding, same, Name, conv1) batchNormalizationLayer(Name, bn1) reluLayer(Name, relu1) maxPooling2dLayer(2, Stride, 2, Name, pool1) convolution2dLayer(3, 32, Padding, same, Name, conv2) batchNormalizationLayer(Name, bn2) reluLayer(Name, relu2) maxPooling2dLayer(2, Stride, 2, Name, pool2) convolution2dLayer(3, 64, Padding, same, Name, conv3) batchNormalizationLayer(Name, bn3) reluLayer(Name, relu3) maxPooling2dLayer(2, Stride, 2, Name, pool3) globalAveragePooling2dLayer(Name, gap) fullyConnectedLayer(10, Name, fc) softmaxLayer(Name, softmax) classificationLayer(Name, output) ];训练配置方面优化器用Adam学习率初始值设为0.001每10个epoch衰减0.5倍。批量大小设为32最大epoch数设为50。这里有个经验批量大小不要设得太大32或者64就够了。因为CWRU数据集的样本量本身就不大批量太大容易导致模型陷入尖锐的局部极小值泛化性能反而下降。普通CNN在CWRU数据集上的测试精度大概在92%到95%之间具体取决于数据划分和增强策略。这个精度作为基线是合格的但如果你要发论文或者做工程落地这个精度还不够看。3.2 ResNet的残差块改造与迁移学习考量ResNet的核心是残差块通过跳跃连接让梯度能够直接回传到浅层解决了深层网络的退化问题。在故障诊断任务中我用的ResNet结构比标准的ResNet-50要浅得多只有18层左右。原因在于CWRU数据集的样本量和复杂度都不足以支撑太深的网络太深的网络反而容易过拟合。残差块的设计我做了简化每个残差块包含两个3×3卷积层每个卷积层后面接批归一化和ReLU。跳跃连接上如果输入输出通道数不一致用一个1×1卷积做投影如果一致直接相加。% 残差块定义 function layers residualBlock(numFilters, stride) layers [ convolution2dLayer(3, numFilters, Padding, same, ... Stride, stride, Name, conv1) batchNormalizationLayer(Name, bn1) reluLayer(Name, relu1) convolution2dLayer(3, numFilters, Padding, same, Name, conv2) batchNormalizationLayer(Name, bn2) additionLayer(2, Name, add) reluLayer(Name, relu_out) ]; end迁移学习这块我试过用ImageNet预训练的ResNet-18来初始化权重但效果并不比从头训练好多少。原因在于ImageNet的图像是自然场景纹理特征跟CWT时频图差异太大预训练权重的迁移价值有限。如果你的数据集特别小比如每类只有几十个样本迁移学习可能会有帮助但如果每类有几百个样本从头训练反而更灵活。ResNet在CWRU数据集上的测试精度能到96%到98%比普通CNN高2到3个百分点。提升主要来自于残差连接让网络能学到更深层的特征同时训练过程也更稳定不容易出现梯度消失。3.3 CNN-SVM混合模型特征提取与分类器的解耦CNN-SVM的思路是把CNN当作特征提取器去掉最后的softmax分类层把全连接层的输出通常是128维或256维的特征向量送给SVM做分类。这种方案的优势在于SVM在小样本高维特征上的分类边界比softmax更清晰尤其是当类别之间的特征差异比较细微时。实现上我先训练一个完整的CNN然后去掉最后的分类层用训练好的卷积层和全连接层提取所有样本的特征向量。然后用这些特征向量训练一个多分类SVM核函数用RBF用网格搜索确定最优的C和gamma参数。% 特征提取 featureLayer fc; % 全连接层名称 featuresTrain activations(net, XTrain, featureLayer, OutputAs, rows); featuresTest activations(net, XTest, featureLayer, OutputAs, rows); % SVM训练 template templateSVM(KernelFunction, rbf, ... BoxConstraint, 1, KernelScale, auto); svmModel fitcecoc(featuresTrain, YTrain, Learners, template); YPred predict(svmModel, featuresTest);这里有个关键点CNN的训练和SVM的训练是解耦的但CNN的特征质量直接决定了SVM的分类效果。我的经验是CNN训练的时候可以用一个较大的学习率快速收敛但最后一轮微调时要把学习率降下来让特征向量在类别之间形成更清晰的聚类结构。CNN-SVM在CWRU数据集上的测试精度跟ResNet差不多有时候略高一点有时候略低一点。但它的优势在于训练速度更快因为SVM的训练不需要GPU而且特征提取只需要前向传播一次。如果你的计算资源有限CNN-SVM是一个很实用的选择。3.4 CNN-BiGRU与CNN-LSTM时序建模的两种路径CNN-BiGRU和CNN-LSTM都是把CNN的空间特征提取能力和循环神经网络的时序建模能力结合起来。区别在于BiGRU用双向门控循环单元LSTM用长短期记忆网络。两者的核心差异在于门控机制的设计LSTM有三个门输入门、遗忘门、输出门BiGRU有两个门更新门、重置门。LSTM的参数更多表达能力更强但训练也更慢BiGRU的参数更少训练更快在某些任务上性能跟LSTM相当。在故障诊断场景中振动信号的时序依赖关系主要体现在冲击的周期性和衰减特性上。BiGRU的双向结构能同时捕捉前向和后向的时序信息对于非平稳信号的处理更有优势。我的实验结果是CNN-BiGRU的测试精度比CNN-LSTM高0.5到1个百分点但训练时间少了大约30%。% CNN-BiGRU结构 layers [ sequenceInputLayer(inputSize, Name, input) convolution1dLayer(3, 32, Padding, same, Name, conv1) batchNormalizationLayer(Name, bn1) reluLayer(Name, relu1) maxPooling1dLayer(2, Stride, 2, Name, pool1) convolution1dLayer(3, 64, Padding, same, Name, conv2) batchNormalizationLayer(Name, bn2) reluLayer(Name, relu2) maxPooling1dLayer(2, Stride, 2, Name, pool2) bilstmLayer(128, OutputMode, last, Name, bigru) fullyConnectedLayer(10, Name, fc) softmaxLayer(Name, softmax) classificationLayer(Name, output) ];这里要注意的是CNN-BiGRU和CNN-LSTM的输入不是二维时频图而是一维序列。你可以把CWT时频图按频率轴展开成序列也可以直接用原始振动信号。我两种都试过用CWT时频图展开的序列效果更好因为时频图已经过滤掉了部分噪声而且包含了频率信息。提示BiGRU的隐藏单元数不要设得太大128或者256就够了。设得太大不仅训练慢而且容易过拟合。我在实验中发现隐藏单元数从128增加到256测试精度几乎没有提升但训练时间翻了一倍。4. 训练过程中的踩坑记录与调参经验4.1 时频图归一化不当导致的模型不收敛这个问题我踩了两次坑第一次是忘了做对数变换第二次是对数变换之后忘了做全局归一化。症状都是训练loss震荡不下降准确率在10%左右徘徊相当于随机猜测。排查过程是这样的我先检查了数据加载部分确认标签和图像是对应的然后检查了网络结构确认输入层尺寸跟图像尺寸匹配最后把时频图可视化出来才发现数值范围有问题。没有做对数变换的时频图低频系数在10的3次方量级高频系数在10的负2次方量级网络的第一层卷积核根本学不到有效的权重。解决方案就是前面说的两步先转dB尺度再做min-max归一化。归一化之后时频图的数值范围在0到1之间网络训练就稳定了。4.2 学习率设置与批归一化的相互作用批归一化层对学习率的敏感度比没有批归一化时低很多但并不意味着可以随便设。我试过学习率0.01训练初期loss下降很快但到了第10个epoch左右就开始震荡最终精度比学习率0.001低了2个百分点。学习率0.0001又太慢50个epoch都没收敛。我的经验是有批归一化的情况下Adam优化器的初始学习率设在0.001到0.003之间比较合适。如果你用的是SGD学习率可以设大一点0.01到0.05之间但一定要加动量项动量系数设0.9。另外学习率衰减策略也很重要。我用的是分段常数衰减每15个epoch衰减0.5倍。你也可以用余弦退火或者指数衰减效果差别不大关键是不要让学习率一直保持在高位否则后期loss会在最优点附近震荡。4.3 过拟合的识别与应对过拟合在CWRU数据集上特别容易发生因为样本量本身就不大。识别过拟合的方法很简单看训练loss和验证loss的曲线。如果训练loss持续下降但验证loss开始上升那就是过拟合了。我遇到过的最严重的一次过拟合是训练精度99.5%验证精度只有85%。排查下来发现两个原因一是网络太深用了ResNet-34参数太多二是数据增强不够训练样本的多样性不足。应对过拟合的手段我按效果排序第一是增加数据增强的强度和多样性第二是减小网络容量减少层数或通道数第三是加Dropout层第四是加L2正则化。Dropout我一般加在全连接层前面丢弃率设0.5。L2正则化的系数设0.0001到0.001之间。注意Dropout和批归一化同时使用时要小心。批归一化在训练和测试时的行为不一致Dropout会放大这种不一致性。我的做法是在卷积层后面用批归一化在全连接层后面用Dropout两者不混在一起用。4.4 类别不平衡的处理CWRU数据集本身是比较平衡的正常样本和各类故障样本的数量差不多。但如果你自己做了数据增强可能会引入新的不平衡。比如你给少数类做了更多的增强导致少数类样本数量反而超过了多数类。处理类别不平衡的方法有两种一是加权损失函数给少数类更高的权重二是重采样对多数类做欠采样或者对少数类做过采样。我一般用加权损失函数因为实现简单而且不会丢失多数类的信息。% 加权损失函数 classWeights [1, 2, 2, 2]; % 假设少数类权重是多数类的2倍 lossLayer weightedClassificationLayer(classWeights);5. 五种模型的对比分析与选型建议5.1 精度、训练时间与参数量的横向对比我把五种模型在相同的数据划分和训练配置下跑了一遍结果如下表所示。测试精度是三次独立实验的平均值训练时间是在同一台机器上RTX 3060测的。模型测试精度训练时间50 epoch参数量推理时间单样本CNN93.5%8分钟约12万3msResNet97.2%18分钟约110万8msCNN-SVM96.8%10分钟含SVM训练约10万5msCNN-BiGRU98.1%25分钟约45万12msCNN-LSTM97.6%35分钟约60万15ms从精度来看CNN-BiGRU最高ResNet和CNN-LSTM紧随其后普通CNN最低。从训练时间来看普通CNN最快CNN-LSTM最慢。从参数量来看ResNet最大CNN-SVM最小。这里要说明的是CNN-SVM的参数量虽然小但它的特征提取器CNN部分和SVM是分开训练的实际部署时需要保存两个模型。而其他四种模型都是端到端的部署时只需要保存一个模型文件。5.2 不同工况下的鲁棒性表现我在0负载、1负载、2负载、3负载四种工况下分别测试了五种模型的精度。结果发现普通CNN在跨负载场景下的精度下降最明显从0负载的94%降到3负载的88%。ResNet和CNN-BiGRU的下降幅度最小只有2到3个百分点。这个结果说明残差连接和时序建模都能提升模型对工况变化的鲁棒性。残差连接让网络能学到更抽象的特征这些特征对负载变化不敏感时序建模让网络能捕捉冲击的周期性而周期性特征在不同负载下是相对稳定的。如果你要做跨工况的故障诊断我建议优先考虑ResNet或者CNN-BiGRU。如果计算资源有限CNN-SVM也是一个不错的选择它的跨负载精度下降幅度在3到4个百分点之间比普通CNN好。5.3 小样本场景下的选型策略实际工程中故障样本往往很难获取每类可能只有几十个样本。我在小样本场景下每类50个样本重新测试了五种模型结果变化很大。普通CNN在小样本下精度只有82%ResNet降到85%CNN-SVM反而升到91%CNN-BiGRU和CNN-LSTM分别是89%和88%。这个结果说明在小样本场景下CNN-SVM的混合方案优势明显。原因在于SVM的分类边界只依赖于支持向量对样本量的要求比softmax低。如果你面临小样本问题我的建议是第一用CNN-SVM而不是端到端的softmax分类第二用迁移学习先在大量无标签数据上预训练CNN再用少量有标签数据微调第三用数据增强扩充样本但要注意增强后的样本分布不能偏离原始分布太远。6. 代码复现中的几个关键细节6.1 MATLAB版本与工具箱依赖这套代码我是在MATLAB R2022a上跑的需要安装Deep Learning Toolbox和Wavelet Toolbox。如果你用的是R2020a之前的版本cwt函数的用法可能不一样需要查一下对应版本的文档。另外bilstmLayer在R2021a之后才支持OutputMode参数设为last之前的版本需要手动取最后一个时间步的输出。如果你用的是旧版本可以用sequenceFoldingLayer和sequenceUnfoldingLayer来实现类似的效果。6.2 随机种子设置与结果可复现性深度学习实验的结果可复现性是个大问题。我见过有人跑同样的代码两次结果差了3个百分点。原因在于随机种子没有固定。在MATLAB里固定随机种子的方法是rng(42); % 固定随机种子但光固定MATLAB的随机种子还不够如果你用了GPU还需要固定GPU的随机种子gpuDevice(1); % 选择GPU parallel.gpu.rng(42); % 固定GPU随机种子另外数据划分的随机性也要控制。我一般先把数据索引打乱然后按固定比例划分把划分结果保存下来后续实验都用同一套划分。6.3 模型保存与加载的注意事项MATLAB保存深度学习模型用save函数但要注意保存的是SeriesNetwork或DAGNetwork对象而不是Layer数组。如果你保存的是Layer数组加载后需要重新组装网络容易出错。% 保存模型 save(trained_model.mat, net); % 加载模型 loadedData load(trained_model.mat); net loadedData.net;加载模型之后如果你要用activations函数提取特征需要确保输入数据的预处理方式跟训练时一致。我见过有人加载模型后直接喂原始信号忘了做CWT和归一化结果精度惨不忍睹。7. 从实验到落地这套方案还能怎么扩展7.1 多传感器融合的可行性CWRU数据集只有单通道加速度信号但实际工业场景中往往有多个传感器水平、垂直、轴向。多传感器融合的思路是把多个通道的CWT时频图叠在一起作为多通道输入送给CNN。这样网络能同时学到不同方向的振动特征对故障类型的区分能力更强。实现上你可以把三个通道的时频图分别生成然后在通道维度上拼接输入尺寸变成128×256×3。网络的第一层卷积核也要相应调整从单通道改成三通道。我试过用模拟的多通道数据做实验精度比单通道提升了1到2个百分点。7.2 在线诊断的实时性优化实验室里的模型精度再高如果推理速度跟不上也没法落地。CNN-BiGRU的推理时间是12ms对于大多数工业场景来说已经够用了。但如果你要做高频采样比如48kHz的在线诊断12ms可能还是太慢。优化的方向有两个一是模型剪枝把不重要的卷积核去掉参数量能减少50%以上推理时间也能相应减少二是模型量化把浮点运算转成定点运算推理速度能提升2到3倍。MATLAB的Deep Learning Toolbox支持模型量化和剪枝你可以用quantize和prune函数来实现。7.3 迁移到其他旋转机械的注意事项这套方案不仅适用于轴承也可以迁移到齿轮箱、电机、泵等旋转机械的故障诊断。但迁移时要注意几点第一特征频率不同CWT的尺度范围需要重新调整第二故障类型不同输出类别数要改第三采样频率可能不同时频图的尺寸和分辨率要相应调整。我的建议是迁移到新设备时先用少量数据做预实验确认CWT时频图能清晰反映出故障特征再大规模训练。如果时频图上看不出明显的故障特征那说明CWT的参数没选对需要重新调整小波基和尺度范围。7.4 结合注意力机制的可能改进注意力机制在图像分类和时间序列分析中都很火把它引入故障诊断也是一个自然的扩展方向。你可以在CNN的卷积块后面加一个通道注意力模块比如SE模块让网络自动学习不同通道的重要性权重。或者在BiGRU后面加一个时间注意力模块让网络关注冲击发生的关键时间点。我在实验里试过SE模块精度提升了0.5到1个百分点但参数量和计算量也相应增加了。如果你的精度已经很高了比如98%以上加注意力机制的边际收益不大但如果你的精度卡在95%左右上不去注意力机制可能是一个突破口。最后分享一个我在实操中总结的小技巧不管用哪种网络结构训练完成后一定要把混淆矩阵画出来看看。精度只是一个数字混淆矩阵能告诉你模型到底在哪些类别上容易混淆。我遇到过好几次整体精度很高但某两个类别之间的混淆特别严重这时候就需要针对性地调整数据增强策略或者网络结构而不是盲目地调参。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询