No, you’d reload optimizer’s state_dict if you want to pause/resume training at epoch N>0 for whatever reason. If model or dataset changes, that should be considered a new run from epoch 0; you’re free to reload parameters from model.load_state_dict(strict=False) for it, there is no need for old optimizer’s state (it only contains stale auxiliary buffers).
PS even if you’re training reloaded params further, new run will have differ gradient statistics, so optimizer’s reload is not good