栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

基于TensorFlow2.3.0的深度卷积模型LeNet构建--在凯斯西储轴承(CWRU)数据上的简单测试(2)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于TensorFlow2.3.0的深度卷积模型LeNet构建--在凯斯西储轴承(CWRU)数据上的简单测试(2)


文章目录
  • 1. 实验数据集说明
  • 2. 数据形式
  • 3. 深度卷积模型构建与测试结果
  • 4. 完整代码
  • 参考文献


1. 实验数据集说明

凯斯西储轴承故障数据集是凯斯西储大学制作的一个球轴承故障诊断公开数据集[1]。电机轴承使用电火花加工 (EDM) 植入故障。在内滚道、滚动体(即球)和外滚道处分别引入了直径从0.007英寸到0.040英寸不等的故障。将故障轴承重新安装到测试电机中,并记录电机负载为 0 至 3 马力(电机速度为 1797 至 1720 RPM)的振动加速度传感器监测数据。在测点布置上,多数采集了三个位置的数据,DE表示驱动端,FE表示风扇端,BA表示基座端。

2. 数据形式

数据包括两个驱动端轴承的监测数据,一个风扇端的监测数据以及少量的baseline数据。故障类型包括滚珠、内圈和外圈故障三种。转速范围在1730-1797rpm之间,负载设置了0、1、2、3马力四种。通过EDM制造人工故障,故障直径(Fault diameter)包括0.007" 0.014"0.021"三种(单位是密耳)。关于故障类型的细划分,可参考文献[2]。在采样频率上,包括12khz和48khz两种,文件夹如下。

数据读取:数据原始格式为mat文件,可采用scipy库进行读取。

# 原始数据--存储路径
import scipy.io as scio
import matplotlib.pyplot as plt
import numpy as np
data_path = r'...CRWU12k Fan End Bearing Fault DataBall007B007_0.mat'
data = scio.loadmat(data_path)
data1 = data['X282_DE_time']
t1 = len(data1)/fs
time1 = np.arange(0, t1, 1/fs)
plt.xlabel('time(s)')
plt.ylabel('signal(m/s^2)')
plt.plot(time1, data1)
plt.show()

3. 深度卷积模型构建与测试结果

在CWRU数据集的测试中,数据为处理好的张量形式。模型结构上,采用TensorFlow2 测试了LeNet的识别效果,数据读取如下。

# 读入数据
CWRU_data = np.load(r'...pythonProject1CWRU_dataCWRU_48k_load_1_CNN_data.npz')
X = CWRU_data['data']
Y = CWRU_data['labels']

# 把Y编辑成独热码
encoder = LabelEncoder()
Y_encoded = encoder.fit_transform(Y)
Y_onehot = tf.keras.utils.to_categorical(Y_encoded)

Lenet模型构建采用经典keras的贯序式模型构建方法。

from tensorflow.keras import layers, models
# LeNet 模型结构构建
model = models.Sequential()
model.add(layers.Conv2D(6, (5, 5), activation='sigmoid', input_shape=(32, 32, 1)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(16, (5, 5), activation='sigmoid'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(120, activation='sigmoid'))
model.add(layers.Dense(84, activation='sigmoid'))
model.add(layers.Dense(10,activation='softmax'))

# 模型超参数设置
model.compile(optimizer='adam',
              loss='categorical_crossentropy',
              metrics=['accuracy'])
# 模型拟合
history = model.fit(X_train, Y_train, epochs=20,
                    validation_data=(X_test, Y_test))

模型训练过程可视化结果如下:

4. 完整代码

有需要完整代码的见 https://mianbaoduo.com/o/bread/YpuYmphy。你的关注与支持是我持续更新的动力!

参考文献

[1] https://engineering.case.edu/bearingdatacenter
[2] https://zhuanlan.zhihu.com/p/448210993

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/971236.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号