私は時系列回帰問題のための双方向LSTMSを持つCNN-RNNモデルアーキテクチャを持っています。私の損失は50エポックに収束しません。各エポックは20kサンプルあります。損失は、0.001 - 0.01の間でバウンスし続けます。多変量LSTM予測損失と評価
batch_size=1
epochs = 50
model.compile(loss='mean_squared_error', optimizer='adam')
trainingHistory=model.fit(trainX,trainY,epochs=epochs,batch_size=batch_size,shuffle=False)
- 私は、 損失は約0.5を滞在するために、誤ってペアにXとYのデータとモデルを訓練しようとしたことは、私のXとY ができる非線形な関係を持っている合理的な結論であります私のモデルで 以上のエポックを学ぶことができますか?
- 私のモデルの予測はパターンをキャプチャしますが、オフセットを使用して、予測の精度を手動でチェックするための動的時間ワーピング距離を使用します。
モデル:
model = Sequential()
model.add(LSTM(units=128, dropout=0.05, recurrent_dropout=0.35, return_sequences=True, batch_input_shape=(batch_size,featureSteps,input_dim)))
model.add(LSTM(units=32, dropout=0.05, recurrent_dropout=0.35, return_sequences=False))
model.add(Dense(units=2, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy'])
あなたはこのトレーニングの歴史についてのコメントでした:{ 'ACC':[0.54、 0.62、 0.70、 0.77、 0.81、 0.84、 0.85、 0.86、 0.88、 0.89]、 「損失を「:[0.69、0.64 、 0.56、 0.47、 0.40、 0.35、 0.32、 0.29、 0.27、 0.24]、 'val_acc':[0.52、0.52 、 0.51、 0.50、 0.51、 0.50、 0.52、 0.53、 0.51、 0.49]、 'val_loss':[0.69、 0.75、 0.81、 150、 1.03、 1.09、 1.04 、 1.16, 1.13, 1.35] – jakeN
オーバーフィッティングのように聞こえます。テストデータが悪化している間にトレーニングデータが改善されたとき。これは、モデルがトレーニングデータを覚えていることを意味しています。 (パラメータが多すぎるか、レイヤーが多すぎるか、またはユニットが多すぎるかもしれません)。人々はしばしばオーバーフィットを減らすために "ドロップアウト"レイヤーを使用します。より小さなモデルを試すこともできます。 (これはあなたの検証データとあなたの訓練データが正しいと仮定して、偏りなしで選択されます) –
質問に私のモデルを追加しました。見てください。私はXとYに学習可能な関係が存在することを証明しようとしているだけで、正確に一致したデータでわずかに精度が向上しています(53%@ 53%)。私の損失曲線が人気のあるL字形のものに見えないので、私が確信していない理由があります。 – jakeN