对CWRU数据集中12K采样频率下的驱动端轴承故障数据,电机近似转速=1797的数据进行四分类。内圈故障、滚动体故障、外圈故障(中心方向@6:00)、正常
file name | label |
---|---|
0.000-Normal.mat | 0 |
0.007-Ball.mat | 1 |
0.007-InnerRace.mat | 2 |
0.007-OuterRace6.mat | 3 |
0.014-Ball.mat | 1 |
0.014-InnerRace.mat | 2 |
0.014-OuterRace6.mat | 3 |
读取数据时,采样率=400,训练数据1824组,测试数据610组
epochs=100、batch size=32
结果在训练集的识别率为1,测试集的识别率为0.9902
测试集结果
Normal | Ball | Inner Race | Outer Race | |
---|---|---|---|---|
Normal | 153 | 0 | 0 | 0 |
Ball | 0 | 153 | 0 | 0 |
Inner Race | 153 | 0 | 146 | 0 |
Outer Race | 153 | 0 | 6 | 152 |
Model
model = Sequential()
model.add(Conv1D(16, 16, activation='relu',
input_shape=(subsample, 1)))
model.add(Conv1D(32, 8, activation='relu', padding="same"))
model.add(MaxPooling1D(8))
model.add(Conv1D(64, 4, activation='relu', padding="same"))
model.add(Conv1D(64, 4, activation='relu', padding="same"))
model.add(MaxPooling1D(4))
model.add(Conv1D(256, 2, activation='relu', padding="same"))
model.add(Conv1D(256, 2, activation='relu', padding="same"))
model.add(MaxPooling1D(2))
model.add(Conv1D(512, 1, activation='relu', padding="same"))
model.add(Conv1D(512, 1, activation='relu', padding="same"))
model.add(MaxPooling1D(1))
model.add(GlobalAveragePooling1D())
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(labels, activation='softmax'))
opt = Adam(0.0002)
model.compile(loss='categorical_crossentropy',
optimizer=opt, metrics=['accuracy'])