I understand your point about the code snippet. I’ll try to come up with it, if nothing else to gain some more insight about what might be causing my problem exactly.

I meant to say that I call .eval() in the training script, when evaluating the model against the validation set. During training itself the model is in training mode.
Yes. The data is properly split.
Weights for both the backbone and the head module are being saved/loaded in the state dictionary. Just confirmed it.
Thanks for the suggestion, I will try that in future experiments on the issue