I am familiar with how to resume training and loading the model.state_dict() and the optimizer.state_dict() 
My problem was that I had to load the state_dicts into another network. Whereas for the model.state_dict() you can pass the strict=False flag to tell PyTorch to only load the parameters of the layers that are present in both the old and the new network, there is no such option for the optimizer.state_dict(). However, apparently this is not a problem since you don’t need the optimizer.state_dict() if you don’t continue on the same network.
Essentially, my use case does not really fall under the category ‘resume training’ but more so ‘start training from scratch’ but with better initial parameters compared to random initialisation.
Hope that makes sense!