基于融合CNN(2D-CNN与1D-CNN融合)与SVM的滚动轴承故障诊断

        本文将2D-CNN与1D-CNN融合,同时对轴承数据集进行训练,然后在汇聚层将两者池化层的输出连接成一个向量,送进全连接层。模型训练结束之后,取FC层的输出作为提取到的故障特征信号。数据来源,西储大学滚动轴承故障诊断数据集。

        融合CNN的结构图如图所示:

基于融合CNN(2D-CNN与1D-CNN融合)与SVM的滚动轴承故障诊断_第1张图片

1,数据准备

         对于10类故障(1正常,9故障),分别采集100组样本,共1000组,采样点为1024。然后按7:2:1划分训练集、验证集与测试集。

2、模型训练-特征提取

        在tensorflow中训练上图所示模型,在1D-CNN中直接将1维振动信号作为输入,整个过程中采用1d卷积进行卷积计算,池化层采用最大池化,填充均为'SAME'。在2D-CNN中,先将1维振动信号转换为32*32的矩阵作为输入,整个过程中采用2d卷积进行卷积计算,池化层采用最大池化,填充均为'SAME'。初始学习率0.1,采用递减学习率,adam优化器,迭代次数4000,batchsize为16,训练时的dropout为0.5,测试时为1.0。loss曲线如下:

基于融合CNN(2D-CNN与1D-CNN融合)与SVM的滚动轴承故障诊断_第2张图片

      训练结束之后,分别输入训练集、验证集、与测试集。采集FC层的输出作为最终的提取到的特征,因此训练集特征700*512,验证集特征200*512,测试集特征100*512

3、故障诊断

      由于CNN采用softmax进行分类,效果不是很好,因此本文采用SVM对2中采集到的特征进行最后的分类,核函数RBF。最后训练集准确率99%,验证集97%,测试集97%。

 

 

4、对比实验

       特征提取对比,分别采用1d-cnn、2d-cnn与融合CNN进行特征提取。模型更改极其方便。

       故障分类对比,分别采用cnn直接分类,cnn特征+svm,cnn特征+tree,原始+SVM,原始数据+tree进行分类。最终结果为

CNN直接分类为84%,CNN+tree为90%,原始+SVM为64,原始数据+tree为50%。

       当然融合cnn+pso+svm最好啦,要是其他组合更好,那玩儿鸡毛!

github链接:https://github.com/fish-kong/Fusion-CNN-multi-CNN-for-feature-extraction-and-SVM-for-fault-diagnosis-

你可能感兴趣的:(机器学习,深度学习)