Training model in eval() mode gives better result in PyTorch?
I have a model with Dropout layers (with p=0.6). I ended up training the model in .eval() mode and again trained the model in .train() mode, I find that the training .eval() mode gave me better accuracy and quicker loss reduction on training data, 

train(): Train loss : 0.832, Validation Loss : 0.821 
eval(): Train loss : 0.323, Validation Loss : 0.251 

Why is this so?

This seems like the model architecture is simple and when in train mode, is not able to capture the features in the data and hence undergoes underfitting.

eval() disables dropouts and Batch normalization, among other modules.

This means that the model trains better without dropout helping the model the learn better with more neurons, also increasing the layer size, increasing the number of layers, decreasing the dropout probability, helps.
