• 大小: 5KB
    文件类型: .py
    金币: 1
    下载: 0 次
    发布日期: 2021-05-28
  • 语言: Python
  • 标签: 深度学习  

资源简介

利用卷积神经网络对轴承故障数据进行分类,通过构造简单的卷积神经网络,达到良好的识别分类效果

资源截图

代码片段和文件信息

import os
os.environ[‘TF_CPP_MIN_LOG_LEVEL‘] = ‘2‘
import numpy as np
import tensorflow as tf

nSampleSize = 20000     # 总样本数
nSig_dim = 576          # 单个样本维度
nLab_dim = 4            # 类别维度

# 读取float型二进制数据(最后数据格式存放在元祖里)
def getdata(nSampSize=20000):
    signal = np.fromfile(‘DLdata90singal.raw‘ dtype=np.float64)
    labels = np.fromfile(‘DLdata90labels.raw‘ dtype=np.float64)
    # print(signal)
    # print(labels)
    mat_sig = np.reshape(signal [-1 nSampSize]) #由于matlab 矩阵写入文件是按照【列】优先 需要按行读取
    mat_lab = np.reshape(labels [-1 nSampSize])
    mat_sig = mat_sig.T # 转换成正常样式 【样本序号,样本维度】
    mat_lab = mat_lab.T
    return mat_sig mat_lab

#数据归一化处理,样本归一化到[-1 1],逐条对每个样本进行自归一化处
def zscore(xx):
    max1 = np.max(xx axis=1)    #按行或者每个样本,并求出单个样本的最大值
    max1 = np.reshape(max1 [-1 1])  # 行向量 ->> 列向量
    min1 = np.min(xx axis=1)    #按行或者每个样本,并求出单个样本的最小值
    min1 = np.reshape(min1 [-1 1])  # 行向量 ->> 列向量
    yy = (xx-min1)/(max1-min1)*2-1
    return yy

def NextBatch(iLen n_batchsize):
    # iLen: 样本总数
    # n_batchsize: 批处理大小
    # 返回n_batchsize个随机样本(序号)
    ar = np.arange(iLen)    # 生成0到iLen-1,步长为1的序列
    np.random.shuffle(ar)   # 打断顺序
    return ar[0:n_batchsize]

def weight_variable(shape):
    # 定义权重初始化
    initial = tf.truncated_normal(shape stddev=0.1)
    return tf.Variable(initial)

def bias_variable(shape):
    # 定义偏置初始化
    initial = tf.constant(0.1 shape=shape)
    return tf.Variable(initial)

def conv2d(x W):
    # 定义卷积层
    # x input tensor of shape ‘[batch in_height in_width in_channels]‘
    # W filter / kernel tensor of shape [filter_height filter_width in_channels out_channels]
    # ‘strides[0] = strides[3] = 1‘. strides[1]代表x方向的步长,strides[2]代表y方向的步长
    # padding: A ‘string‘ from: ‘“SAME“ “VALID“‘
    return tf.nn.conv2d(x W strides=[1 1 1 1] padding=‘SAME‘)

def max_pool_2x2(x):
    # 池化层
    # stride [1 x_movement:2 y_movement:2 1]
    return tf.nn.max_pool(x ksize=[1 2 2 1] strides=[1 2 2 1] padding=‘SAME‘)

# 为NN定义placeholder
xs = tf.placeholder(tf.float32[NonenSig_dim])
ys = tf.placeholder(tf.float32[NonenLab_dim])
keep_prob = tf.placeholder(tf.float32)

x_image = tf.reshape(xs [-1 24 24 1])

## conv1 layer ##
W_conv1 = weight_variable([5 5 1 32]) # patch 5x5 in size 1 out size 32
b_conv1 = bias_vari

评论

共有 条评论