對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'])