Hey Vince,
Looks fine to me. One possible error could be that you freeze some layers in your model (set the requires_grad to False) before creating your optimiser and before saving -> but forget to freeze your model when you’re resuming training.
Perhaps it would help to print the shapes of your params before saving and before loading to see if they match?
[print(p.size()) for p in params]