I have an LSTM and have the following chart showing training validation performance by epoch:

enter image description here

Could someone explain? How can my validation performance be better than my training performance in early epochs?

Guidance appreciated.

  • 1
    $\begingroup$ Do you have dropout, batch normalization or any other computational block that changes its behaviour between training and inference modes? $\endgroup$
    – noe
    Commented Oct 21, 2023 at 17:19
  • $\begingroup$ I should have put the code up. Using Keras. It is a stacked LSTM with dropout after every layer. Validation set to .1 when I fit. $\endgroup$ Commented Oct 22, 2023 at 20:28

1 Answer 1


The usual cause for having a training loss that is lower than the validation loss during the initial training stages is having some element that changes its behaviour between training and inference modes. Some typical examples include dropout and batch normalization.

In the case of dropout, which is what you are using, in training mode the dropout zeroes out some values randomly. This helps the network learn more robust representations, but also hurts the performance of the network. During inference mode, dropout is disabled completely. Your validation loss is computed in inference mode, causing it to perform better than during training because dropout disabled.

Then, around epoch 400, your model starts overfitting. That's why you see the validation loss going up from that point on.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.