DL00358-基于迁移学习的离心泵滚动轴承故障自动识别方法研究 在输入原始时序加速度数据的网络中,基于与输入经过特征提取的数据的网络同样的考虑,取batch_size=20(由于原始时序数据长度太长,因此需要对原始数据进行截取。 所用的数据采样频率为12kHZ,发动机转速最低为1720,因此加速度计在发动机每转一圈最多能采样到7个数据,因此截取长度应大于等于7的整数倍,在我的程序中我的截取长度为200,因此取batch_size=20)Dropout rate=0.3,epochs=20。 特征提取:epochs=10时训练集准确率93.33%,测试集准确率94.74%,但是训练集准确率和测试集准确率不会因epoch的增加而增加。 原始数据:epochs=10时训练集准确率94.22%,测试集准确率93.68%,epoch在12左右之后训练集和测试集准确率均能达到100%。
最近在研究基于迁移学习的离心泵滚动轴承故障自动识别,过程中遇到了不少有趣的点,来和大家分享下。
一、数据处理与网络参数设定
在处理输入原始时序加速度数据的网络时,batchsize 的选择很关键。因为原始时序数据长度超长,就需要截取。这里数据采样频率为 12kHz,发动机转速最低 1720,简单计算可得加速度计在发动机每转一圈最多能采样到 7 个数据,为了保证数据有效性,截取长度得是大于等于 7 的整数倍,我在程序里设置截取长度为 200。基于此,batchsize 设为 20 。同时,Dropout rate 设为 0.3 ,epochs 设为 20 。
这里简单说下 Dropout ,它是一种防止过拟合的手段。在神经网络训练过程中,以 Dropout rate 的概率随机将部分神经元的输出设置为 0 ,这样每次训练时,网络结构都是不一样的,避免模型对某些特征过度依赖,增强泛化能力。比如在 Keras 里,代码实现就像这样:
from keras.models import Sequential from keras.layers import Dense, Dropout model = Sequential() model.add(Dense(64, activation='relu', input_dim=input_dim)) model.add(Dropout(0.3)) # Dropout rate 为 0.3 model.add(Dense(1, activation='sigmoid'))二、特征提取与原始数据训练对比
- 特征提取:当 epochs = 10 时,训练集准确率达到 93.33% ,测试集准确率 94.74% 。但有意思的是,之后随着 epoch 的增加,训练集和测试集准确率都不再上升。这说明在这个模型设置下,10 个 epoch 时模型基本已经收敛,再多训练也不会有提升。
- 原始数据:同样在 epochs = 10 时,训练集准确率 94.22% ,测试集准确率 93.68% 。而当 epoch 在 12 左右之后,训练集和测试集准确率均能达到 100% 。这表明对于原始数据,模型在训练一定轮数后能很好地学习到数据特征,实现高精度识别。
整体来看,这个基于迁移学习的离心泵滚动轴承故障自动识别方法在数据处理和模型训练上还有很多值得琢磨优化的地方。希望这些分享能给同样在研究相关方向的小伙伴一些启发。后续我也会继续探索,有新发现再和大家交流。