cnn实现一维震动信号故障诊断
import os
os.environ[‘TF_CPP_MIN_LOG_LEVEL’] = ‘2’
import numpy as np
import scipy.io as sio
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
import xlrd
from openpyxl import Workbook
以交互式方式启动session
如果不使用交互式session,则在启动session前必须构建整个计算图,才能启动该计算图
#sess = tf.InteractiveSession()
data = sio.loadmat(‘ballfault_DE.mat’)
sensorlenth=2048*36
condition=4#工况数
classification=10#类别
L=2048#网络输入长度
evfisam_num=int(sensorlenth/L)
evfitrain_num=int(evfisam_num3/4)#每个工况用于训练的样本数
evfitest_num=evfisam_num-evfitrain_num#每个工况用于测试的样本数
div=1
C=4
al=512
evdoctrain_num=condition(evfitrain_num-1)C
evdoctest_num=conditionevfitest_num#类别数×工况数×每个文件的样本数
batch_num=int(evdoctrain_num/div)
train_num=evdoctrain_numclassification
test_num=evfitest_numcondition*classification
cnn_train=np.zeros((train_num,L))
cnn_test=np.zeros((test_num,L))
sensor_1=data[‘ballfault’]
for i in range(classification*condition):
sensor=sensor_1[0:sensorlenth,i]
cnn_train_1=sensor[0:L*evfitrain_num]
for j in range(C):#数据增强C次
cnn_train[(i*C+j)*(evfitrain_num-1):(i*C+j+1)*(evfitrain_num-1),:]=cnn_train_1[j*al:(evfitrain_num-1)*L+j*al].reshape((evfitrain_num-1),L)
cnn_test_1=sensor[L*evfitrain_num:evfisam_num*L]
cnn_test[i*evfitest_num:(i+1)*evfitest_num,:]=cnn_test_1[0:evfitest_num*L].reshape(evfitest_num,L)
lable_train=np.zeros(train_num)
lable_test=np.zeros(test_num)
for num_dir in range(0,classification):
lable_tr