@chen Are you saying you get better model accuracy when you use model.train() instead of model.eval() during validation?
model.eval() shouldn’t be the cause for difference in accuracy as it affects only behaviour of Dropout and BatchNorm.
It could be the case where your model has not generalized for unseen data.
Can you post the code here?