Some layers like dropout and batchnorm behaves differently during training and evaluation. train() and eval() mode converts between these modes. Maybe I wasn’t clear enough, but you typically put the model in eval() mode before evaluation and then put it in train() mode once the validation is over and you want to train again.
Yes, the method you are describing definitely works. The question is if it is the best way, or even a good way. If your training isn’t very long, I’d say just try it and see what the results are. Personally I think 1 image is a bit to little for validation but if you don’t have any way of getting more data I guess that’s it. Again, you can save several models and check which one is the best after training 
Edit: I know there is something called k-fold Cross-Validation 1 but I haven’t seen it used in deep learning to much. Perhaps someone more experienced in this could help out?