I am still confuse what is the different of model.train(False) and model.eval()? DO I need to do both model.train(False) andmodel.eval() for every validation and test step?
Simply I have a model which deploy dropout layers. I am doing like this:

In training phase -> model.train(True)

In validation phase -> model.train(False)

In testing phase -> model.eval()


However I found that my model is not working properly. I must remove model.eval() to get the best result. Later I tried in validation phase -> model.train(False) followed by model.eval(). However again the result is not good I must remove model.eval() in testing phase. Could anyone explain this phenomena?, what should I do in validation and testing phase?, is it enough if we only usemodel.train(False)?