データセットC
が50,000
(バイナリ)の128
のサンプルを持っています。クラスラベルは、1
または-1
のバイナリです。たとえば、サンプルは[1,0,0,0,1,0, .... , 0,1] [-1]
のようになります。私の目標は、バイナリクラス(すなわち、1または-1)に基づいてサンプルを分類することです。私はRecurrent LSTM
を使って分類のための良いモデルを生成しようと考えました。そうするために、私はKeras
ライブラリを使用して、次のコードを書かれている:分類にはSTATEFUL Recurrent 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%以上、悪い精度を取得していません。私は、精度を向上させることを望む損失関数と共にアクティベーション関数を変更しようとしましたが、何も機能しません。驚いたことに、私が多層パーセプトロンを使用すると、私は約97%の精度を得ることができます。したがって、私は、LSTMが分類に使用できるかどうか、あるいはここに私のコードに何かがないか、間違っているかどうか質問し始めます。親切にも、正確性を向上させるために、コードに何かがないか間違っているかどうかを知りたいです。助けや助言をいただければ幸いです。
ありがとうございます。とても有難い – Kris