Kerasでimdbデータセットを使用するLSTMネットワークのサンプルコードを実行します。次のリンクでコードを見つけることができます。 imdb_lstm.pyKerasを使用したLSTMネットワークでの検証の損失と精度
私の問題は、予想通りコードとしてトレーニング損失が減少し、トレーニング精度増加を進行することであるが、検証精度が高い値に間隔および検証損失が大きく変動します。私は以下のトレーニングフェーズのログの一部を添付します。私も、訓練の損失が非常に小さいとき(〜0.01-0.03)、次の時代にそれが増加し、その後再び減少することを観察しています。私が言及しているのは、エポック75-77で見ることができます。しかし一般的にそれは減少します。
私が期待しているのは、トレーニングの精度は常に0.99-1まで上昇し、トレーニングの損失は常に減少するということです。さらに、検証の精度は、おそらく0.4から開始し、例えば0.8に引き上げる必要があります。検証の精度がエポックを超えて改善されない場合、エポック中の待機点は何ですか?また、テスト精度は0.81に近いです。
私も自分のデータで試してみましたが、同じ状況になりました。同様の方法でデータを処理しました。トレーニング、検証、テストポイントがこのサンプルコードのロジックと同じロジックで処理されていることを意味します。
さらに、LSTMから各単語の出力を取得した後、このコードがどのように文全体を表しているかわかりませんでした。それは平均または最大プールを行うか、それをロジスティック回帰分類器に与える前にLSTM層からの最後の出力のみを取るか?
ご協力いただければ幸いです。
Using Theano backend.
Loading data...
25000 train sequences
25000 test sequences
Pad sequences (samples x time)
X_train shape: (25000, 80)
X_test shape: (25000, 80)
Build model...
Train...
Train on 22500 samples, validate on 2500 samples
Epoch 1/100
22500/22500 [==============================] - 236s - loss: 0.5438 - acc: 0.7209 - val_loss: 0.4305 - val_acc: 0.8076
Epoch 2/100
22500/22500 [==============================] - 237s - loss: 0.3843 - acc: 0.8346 - val_loss: 0.3791 - val_acc: 0.8332
Epoch 3/100
22500/22500 [==============================] - 245s - loss: 0.3099 - acc: 0.8716 - val_loss: 0.3736 - val_acc: 0.8440
Epoch 4/100
22500/22500 [==============================] - 243s - loss: 0.2458 - acc: 0.9023 - val_loss: 0.4206 - val_acc: 0.8372
Epoch 5/100
22500/22500 [==============================] - 239s - loss: 0.2120 - acc: 0.9138 - val_loss: 0.3844 - val_acc: 0.8384
....
....
Epoch 75/100
22500/22500 [==============================] - 238s - loss: 0.0134 - acc: 0.9868 - val_loss: 0.9045 - val_acc: 0.8132
Epoch 76/100
22500/22500 [==============================] - 241s - loss: 0.0156 - acc: 0.9845 - val_loss: 0.9078 - val_acc: 0.8211
Epoch 77/100
22500/22500 [==============================] - 235s - loss: 0.0129 - acc: 0.9883 - val_loss: 0.9105 - val_acc: 0.8234