众多师弟师妹在使用一维卷积神经网络对凯斯西储,哥伦比亚等大学开源的轴承故障数据集进行故障诊断时,不知道该怎么把Matlab文件中的数据直接导进伸进网络进行训练。我之前也不会,我一直用matlab打开数据然后黏贴到EXCEL再进行数据增强和归一化,最终保存成CSV格式。在训练神经网络的时候直接读取归一化好的数据进行训练,虽然这样比较直观,而且只做一次数据集就可以满足所有形式神经网络的训练。但是,如果要研究自己发论文所提出来的神经网络模型的泛化能力、抗噪声能力、超参数寻优等问题的时候可能要不停的重新制作加噪声的数据集等等,这时候就比较麻烦。因此,本人自己编写了一段数据处理的代码,包括归一化,代码如下所示:

众多师弟师妹在使用一维卷积神经网络对凯斯西储,哥伦比亚等大学开源的轴承故障数据集进行故障诊断时,不知道该怎么把Matlab文件中的数据直接导进伸进网络进行训练。
我之前也不会,我一直用matlab打开数据然后黏贴到EXCEL再进行数据增强和归一化,最终保存成CSV格式。在训练神经网络的时候直接读取归一化好的数据进行训练,虽然这样比较直观,而且只做一次数据集就可以满足所有形式神经网络的训练。
但是,如果要研究自己发论文所提出来的神经网络模型的泛化能力、抗噪声能力、超参数寻优等问题的时候可能要不停的重新制作加噪声的数据集等等,这时候就比较麻烦。
因此,本人自己编写了一段数据处理的代码,包括归一化,代码如下所示:

# -*- coding: utf-8 -*-
"""
Created on Tue Oct  5 14:21:26 2021@author: Hebei University of Engineering
"""
import numpy as np
import pandas as pd
import keras
from keras.models import Sequential
from keras.layers import LSTM,Input,add,Dense,AveragePooling1D, Activation, Flatten, Convolution1D, Dropout,MaxPooling1D,BatchNormalization,GlobalAveragePooling1D,ZeroPadding1D
import tensorflow as tf#将tensorflow命名为tf
from keras.models import Sequential#导入序列函数
from keras.wrappers.scikit_learn import KerasClassifier#导入分类标签显示工具
from keras.utils import np_utils,plot_model#导入独热吗部分编辑函数
from sklearn.model_selection import cross_val_score,train_test_split,KFold#导入独热吗部分编辑函数
from sklearn.preprocessing import LabelEncoder#导入独热吗部分编辑函数
from keras.models import load_model#导入保存模型工具
from keras.models import model_from_json#导入保存模型工具
import matplotlib.pyplot as plt#导入画图工具
from sklearn.metrics import confusion_matrix#导入混淆矩阵,这段代码用不上
import itertools#这个我忘记了
from keras import layers#导入层
from keras.optimizers import SGD#导入优化器
import scipy.io as scio
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
data1 = scio.loadmat('C:/Users/1/Desktop/大论文作图/mydata1')['DA09']
data2 = scio.loadmat('C:/Users/1/Desktop/大论文作图/mydata2')['DA09']
data3 = scio.loadmat('C:/Users/1/Desktop/大论文作图/mydata3')['DA09']
data4 = scio.loadmat('C:/Users/1/Desktop/大论文作图/mydata4')['DA09']
data5 = scio.loadmat('C:/Users/1/Desktop/大论文作图/mydata5')['DA09']
data6 = scio.loadmat('C:/Users/1/Desktop/大论文作图/mydata6')['DA09']
data7 = scio.loadmat('C:/Users/1/Desktop/大论文作图/mydata7')['DA09']
data8 = scio.loadmat('C:/Users/1/Desktop/大论文作图/mydata8')['DA09']
data9 = scio.loadmat('C:/Users/1/Desktop/大论文作图/mydata9')['DA09']#由于凯斯西储大学的轴承故障数据集(字典格式)中包含多个键['X097_DE_time']
#L=list()def ber(data,windowlen,buchang):p=len(data)L=list()q=(p-windowlen)for i in range(q):if  int(i) % int(buchang) == 0:a=data[i:i+windowlen]          L.append(a)return Ldef data(data,windowlen,buchang,biaoqian):data=ber(data,windowlen,buchang)data=np.array(data)x,y,z=data.shapec=data.reshape(x,y)for i in range(x):c1=c[i,:]pingjunzhi=np.mean(c1)c2=c1-pingjunzhic3=max(abs(c2))c1=c2/c3c[i,:]=c1k=np.zeros((x,1))+biaoqianKK=np.hstack([c,k])print(k)print(KK.shape)return KKyb1=data(data1,1024,24,1)
yb2=data(data2,1024,24,2)
yb3=data(data3,1024,24,3)
yb4=data(data4,1024,24,4)
yb5=data(data5,1024,24,5)
yb6=data(data6,1024,60,6)
yb7=data(data7,1024,72,7)
yb8=data(data8,1024,72,8)
yb9=data(data9,1024,72,9)L3=np.vstack([yb1,yb2,yb3,yb4,yb5,yb6,yb7,yb8,yb9])
X = np.expand_dims(L3[:, 0:1024].astype(float), axis=2)#每行的1-1024列作为训练数据
Y = L3[:, 1024]#每行的第1025列作为训练标签encoder = LabelEncoder()
Y_encoded = encoder.fit_transform(Y)
Y_onehot = np_utils.to_categorical(Y_encoded)#划分数据集
X_train, X_test, Y_train, Y_test = train_test_split(X, Y_onehot, test_size=0.3, random_state=0)seed = 7
np.random.seed(seed)def Conv2d_BN(x, nb_filter,kernel_size, strides=1, padding='same',name=None):if name is not None:bn_name = name + '_bn'conv_name = name + '_conv'else:bn_name = Noneconv_name = Nonex = Convolution1D(nb_filter,kernel_size,padding=padding,strides=strides,activation='tanh',name=conv_name)(x)x = MaxPooling1D(pool_size=2,strides=1,padding='same')(x)x = BatchNormalization(axis=1,name=bn_name)(x)return xdef Conv_Block(inpt,nb_filter,kernel_size,strides=1, with_conv_shortcut=False):x = Conv2d_BN(inpt,nb_filter=nb_filter,kernel_size=1,strides=strides,padding='same')x = Conv2d_BN(x, nb_filter=nb_filter, kernel_size=3, padding='same')x = Conv2d_BN(x, nb_filter=nb_filter, kernel_size=1, padding='same')if with_conv_shortcut:shortcut = Conv2d_BN(inpt,nb_filter=nb_filter,strides=strides,kernel_size=kernel_size)x = add([x,shortcut])return xelse:x = add([x,inpt])return xinpt = Input(shape=(1024,1))
x = ZeroPadding1D(3)(inpt)
x = Dropout(0.5)(x)
x = Conv2d_BN(x,nb_filter=16,kernel_size=64,strides=8,padding='same')
x = Conv_Block(x,nb_filter=32,kernel_size=32,strides=1,with_conv_shortcut=True)
x = Conv_Block(x,nb_filter=64,kernel_size=3,strides=1,with_conv_shortcut=True)
x = Conv_Block(x,nb_filter=64,kernel_size=3,strides=1,with_conv_shortcut=True)
x = Conv_Block(x,nb_filter=64,kernel_size=3,strides=1,with_conv_shortcut=True)
x = Conv_Block(x,nb_filter=64,kernel_size=3,strides=1,with_conv_shortcut=True)
x = Conv_Block(x,nb_filter=64,kernel_size=3,strides=1,with_conv_shortcut=True)
x = Flatten()(x)
x = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True, beta_initializer='zeros', gamma_initializer='ones', moving_mean_initializer='zeros', moving_variance_initializer='ones', beta_regularizer=None, gamma_regularizer=None, beta_constraint=None, gamma_constraint=None)(x)
x=Dense(100,activation='tanh')(x)
x = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True, beta_initializer='zeros', gamma_initializer='ones', moving_mean_initializer='zeros', moving_variance_initializer='ones', beta_regularizer=None, gamma_regularizer=None, beta_constraint=None, gamma_constraint=None)(x)
x=Dropout(0.5)(x)
x=Dense(60,activation='tanh')(x)
x = BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True, beta_initializer='zeros', gamma_initializer='ones', moving_mean_initializer='zeros', moving_variance_initializer='ones', beta_regularizer=None, gamma_regularizer=None, beta_constraint=None, gamma_constraint=None)(x)
x=Dropout(0.5)(x)
x = Dense(9,activation='softmax')(x)from keras.models import Model
model = Model(inputs=inpt,outputs=x)
model.summary()model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])from keras.callbacks import TensorBoard
import time
import keras
model_name = "模型名-{}".format(int(time.time()))
tensorboard = TensorBoard(log_dir='logs'.format(model_name),write_images='Ture')
tensorboard=keras.callbacks.TensorBoard(histogram_freq=1)
history=model.fit(X_train, Y_train,epochs=600,validation_data=(X_test, Y_test),batch_size=512,callbacks=[tensorboard])
#训练批量大小和批次
#history=model.fit(X_train, Y_train,epochs=100,validation_data=(X_test, Y_test),batch_size=64)#model.save('C:/Users/1/Desktop/加速度传感器4.h5')
model_json =model.to_json()
with open('C:/Users/1/Desktop/大论文作图/传感器9', 'w')as json_file:json_file.write(model_json)# 权重不在json中,只保存网络结构
model.save_weights('C:/Users/1/Desktop/大论文作图/传感器9.json.h5')
#画出损失函数图
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.plot(history.history['loss'],'_',label='train_loss')
plt.plot(history.history['val_loss'],':',label='val_loss')
plt.plot(history.history['accuracy'],'.',label='train_acc')
plt.plot(history.history['val_accuracy'],'r',label='val_acc')
plt.show()los=history.history['val_loss']
Aos=history.history['val_accuracy']
a=history.history['loss']
b=los=history.history['val_loss']
print(b)

有人要问没看见给形成的数据进行打乱顺序,这一点不用担心,在代码的第90行,划分数据集的时候是随机选择并打乱顺序的。

省刊
核心
EI
SCI
师弟师妹赶紧发吧

一维卷积神经网络直接读取mat文件并进行数据增强和归一化相关推荐

  1. [DeeplearningAI笔记]卷积神经网络2.9-2.10迁移学习与数据增强

    4.2深度卷积网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.9迁移学习 迁移学习的基础知识已经介绍过,本篇博文将介绍提高的部分. 提高迁移学习的速度 可以将迁移学习模型冻结的部分看 ...

  2. 基于Keras的卷积神经网络用于猫狗分类(进行了数据增强)+卷积层可视化

    接着我上一篇博客,https://blog.csdn.net/fanzonghao/article/details/81149153. 在上一篇基础上对数据集进行数据增强.函数如下: "&q ...

  3. 基于Keras的卷积神经网络用于猫狗分类(未进行数据增强)+卷积层可视化

    首先看数据集路径: cats和dogs存放的就是各种大小的猫狗图片. 读取数据集代码: import os import matplotlib.pyplot as plt ""&q ...

  4. 基于一维卷积神经网络的滚动轴承故障识别

    基于一维卷积神经网络的滚动轴承故障识别 文章目录 基于一维卷积神经网络的滚动轴承故障识别 一.数据预处理 二.模型构建 三.模型训练 四.模型测试 总结 一.数据预处理 采用美国凯斯西储大学(CWRU ...

  5. 基于FPGA的一维卷积神经网络CNN的实现(二)资源分配

    资源分配 环境:Vivado2019.2. Part:xcku040-ffva1156-2-i,内嵌DSP个数 1920个,BRAM 600个也就是21.1Mb. 说明:通过识别加高斯白噪声的正弦波. ...

  6. 基于FPGA的一维卷积神经网络CNN的实现(一)框架

    理论建立与效果展示 环境:Vivado2019.2. Part:xcku040-ffva1156-2-i,内嵌DSP个数 1920个,BRAM 600个也就是21.1Mb. 说明:通过识别加高斯白噪声 ...

  7. python保存为mat文件_Python读取mat文件保存为pickle格式的实例代码

    Python使用pickle模块储存对象操作 Python读取mat文件,并保存为pickle格式的方法 这两天在搞Theano,要把mat文件转成pickle格式载入Python. Matlab是把 ...

  8. python读取mat文件格式_Python读取mat文件,并保存为pickle格式的方法

    这两天在搞Theano,要把mat文件转成pickle格式载入Python. Matlab是把一维数组当做n*1的矩阵的,但Numpy里还是有vector和matrix的区别,Theano也是对二者做 ...

  9. 【keras】一维卷积神经网络多分类

    刚刚接触到深度学习,前2个月的时间里,我用一维的卷积神经网络实现了对于一维数据集的分类和回归.由于在做这次课题之前,我对深度学习基本上没有过接触,所以期间走了很多弯路. 在刚刚收到题目的要求时,我选择 ...

最新文章

  1. 异步社区本周半价电子书
  2. C# 反射与dynamic最佳组合
  3. [转]九个Console命令,让js调试更简单
  4. HPU-- 1190 確率
  5. mybatis中修改了数据,控制台显示成功,数据库没有修改
  6. javascript教程:console.log 详解
  7. 有没有四十多岁快五十的女人突然想逃离家庭?
  8. python怎么通过手机号定位_基于Python的免费手机号码归属地查询
  9. 《剑指offer》66道算法题合集(java实现)
  10. SAP系统环境整体架构设计总结
  11. Raptor码(一):2007RFC5053标准编解码学习
  12. 【5G NR】工作频段和信道安排
  13. 人工智能的十大应用方向是哪些?
  14. 总有一条适合你|程序猿的女朋友
  15. Cross-X Learning for Fine-Grained Visual Categorization
  16. POJ 3264 线段树
  17. 博客园客户端UAP开发随笔 -- App UI设计的三大纪律八项注意
  18. 分享一个二维码生成的接口,简单好用
  19. np.meshgrid plt.contourf
  20. 2019 腾讯视频qlv的格式转换MP4的解决方案

热门文章

  1. ti81xx_interrupt 1146: VBUS error workaround (delay coming)产生原因分析
  2. unity UI交互检测
  3. win32api之修改revit状态栏提示
  4. OpenCV—Python视频的读取及保存
  5. java使用POI导出Excel设置单元格格式为数值类型
  6. jQuery插件SuperSlide的使用
  7. Web系统常见安全漏洞介绍及解决方案-XSS攻击
  8. 【论文分享】Fuzzing: A Survey for Roadmap
  9. 原生js控制台(console)打印直角三角形,等腰三角形、矩形、棱形
  10. ARM学习-ARM指令集详解