I have a timeseries data and I am doing univariate forecasting using stacked LSTM without any activation function, Like following.

model = Sequential()
model.add(LSTM(200, return_sequences=True, input_shape=(window_6, features)))
model.add(LSTM(200, return_sequences=True))
model.add(LSTM(200, return_sequences=True))
model.compile(optimizer='adam', loss='mse')

Also, I used ADAM optimizer and MSE loss, with 128 batch size and 500 epochs, and 500 steps per epoch.

loss_ = PlotLossesKeras()
model.fit(X1, y1, batch_size= 128, epochs=500, validation_split = 0.2, steps_per_epoch = 500, shuffle=True, callbacks=[loss_])
The loss plot looks like this:


    training             (min:   76.334, max: 1568.067, cur:   77.816)
    validation           (min:   83.637, max:  382.949, cur:   84.288)
500/500 [==============================] - 5s 9ms/step - loss: 77.8162 - val_loss: 84.2875

My questions:

  1. Is this model overfit/underfit/Normal fit?
  2. The current loss is 77 and validation loss is 84. How I can reduce loss to below 10?

Need suggestions. Open for any critique. Thanks.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.