Training model in eval() mode gives better result ?!

Well, that just means that your model trains better without dropout. What you can try to do is to increase the layer size or number of layers, or decrease the dropout proba, to see if that helps.