Day 1:(输入数据集)
1.函数声明
import matplotlib.pyplot as plt #matplotlib是类似matlab画图格式的函数
from scipy.io import loadmat #读取mat格式的数据集
import numpy as np#数组函数
import siamese#siamese神经网络函数(siamese-孪生)
import utils#制作数据集函数,滑动窗口截取时域信号
[siamese网络详解]
应用:使用tensorflow在mnist上实现的siamese net
2.数据加载
import cwru #数据函数
# imp.reload(siamese)
window_size = 2048 #样本序列长度
data = cwru.CWRU(['12DriveEndFault'], ['1772', '1750', '1730'], window_size) #数据
data.nclasses,data.classes,len(data.X_train),len(data.X_test)#数据类型数,数据类型,训练集长度,测试集长度
注释:data是处理好的数据;data.nclasses是数据种类数目;data.classes是数据类型;
output:
(10,
[('NormalBaselineNormal', 0),
('12DriveEndFault0.007-Ball', 1),
('12DriveEndFault0.014-Ball', 2),
('12DriveEndFault0.021-Ball', 3),
('12DriveEndFault0.007-InnerRace', 4),
('12DriveEndFault0.014-InnerRace', 5),
('12DriveEndFault0.021-InnerRace', 6),
('12DriveEndFault0.007-OuterRace6', 7),
('12DriveEndFault0.014-OuterRace6', 8),
('12DriveEndFault0.021-OuterRace6', 9)],
19800,
750)
3.数据可视化
mat_dict = loadmat('Datasets/CWRU/12DriveEndFault/1730/0.014-InnerRace.mat')#加载内圈故障数据
key1,key2 = cwru.fliter_key(mat_dict.keys())#诊断出信号故障类型
print(key1,key2) #打印诊断结果(文中使用的是双通道)
time_series = np.hstack((mat_dict[key1], mat_dict[key2]))#提取故障数据
plt.figure(figsize=(16,1)) #画出双通道信号时域图
plt.plot(time_series[:8000,0])
plt.show()
plt.figure(figsize=(16,1))
plt.plot(time_series[:8000,1])
output:
4.用于训练和测试的样本制作
# imp.reload(siamese)
loader = siamese.Siamese_Loader(data.X_train,data.y_train,data.X_test,data.y_test)#
4.1训练样本
# imp.reload(utils)
pairs,targets,categories=loader.get_batch(8)
print(pairs[0].shape)
print(targets)
print(categories)
utils.plot_pairs(pairs)
output:
4.2测试样本
pairs, targets,categories=loader.make_oneshot_task2(10)
print(targets)
print(categories)
utils.plot_pairs(pairs)
output:
总结:
这只是数据集的制作和可视化程序,下次整理程序内部具体流程。