@mapostig No, I guess it’s not a good practice to use model.train() mode in evaluation. You can use the same custom dataset class to create a different dataset loader for your evaluation dataset.
for phase in ['train','val']:
if phase == 'train':
model.train()
#Training Part with backprog
else:
model.eval()
#Just a forward Pass.
Some layers like Dropout and batch Norm will behaves differently under model.eval().
Further you can look to this discussion.