1
我有一個數據集C
的50,000
(二進制)樣本,每個樣本的128
功能。類標籤也是二進制文件,即1
或-1
。例如,樣本看起來像這樣[1,0,0,0,1,0, .... , 0,1] [-1]
。我的目標是根據二進制類(即1或-1)對樣本進行分類。我想嘗試使用Recurrent LSTM
來生成一個很好的分類模型。是否可以使用STATEFUL循環NN(LSTM)進行分類
tr_C, ts_C, tr_r, ts_r = train_test_split(C, r, train_size=.8)
batch_size = 200
print('>>> Build STATEFUL model...')
model = Sequential()
model.add(LSTM(128, batch_input_shape=(batch_size, C.shape[1], C.shape[2]), return_sequences=False, stateful=True))
model.add(Dense(1, activation='softmax'))
print('>>> Training...')
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(tr_C, tr_r,
batch_size=batch_size, epochs=1, shuffle=True,
validation_data=(ts_C, ts_r))
但是,我越來越壞的準確性,不超過55%:要做到這一點,我一直在使用Keras
庫編寫下面的代碼。我試圖改變激活函數以及希望提高精度的損失函數,但沒有任何效果。令人驚訝的是,當我使用多層感知器時,我的準確率達到了97%左右。因此,我開始質疑LSTM是否可以用於分類,或者我的代碼有缺失或錯誤。請注意,我想知道代碼是否有缺失或錯誤來提高準確性。任何幫助或建議表示讚賞。
感謝您的回覆。非常感激 – Kris