I don’t think there should any difference running evaluation inside the training loop as opposed to running it afterward expect for the obvious that the model has trained longer if you run it after. Could you expand a little on what weird behaviors you encounter? Could you give some example code (preferably not too large) that produces this behavior, that would help to debug