Why would you expect to see the same training and validation loss?
Assuming you are using model.train() and model.eval() properly, the batchnorm layers might not converged their running stats to the batch statistics and would thus output “not perfectly normalized” data during validation.