I am new to PyTorch and I am trying to create word embeddings to learn PyTorch.  Unfortunately, I am running on an old laptop and only get limited training runs before having to shutdown.  So I am trying to set the model up to resume training, only it does not appear to resume training.  If interested, the full code is here 14.  I come to this conclusion as when I train for multiple epochs, the loss consistently declines, in this case from about 11,000 down to about 5,000.  From epoch n to n+1 the loss is relatively stable. When I try to resume from a saved checkpoint, the loss starts out at 11,000 again.
Maybe I am misinterpreting what is happening.  Here are the relevant snippits of code.
At the end of each epoch I save the model:
def save_checkpoint(state, filename):
    torch.save(state, filename)

save_checkpoint({
            'epoch': epoch + 1,
            'state_dict': model.state_dict(),
            'optimizer': optimizer.state_dict(),
        }, parms.save_dir)

Then on resume, I load the model with this code:
checkpoint = torch.load(parms.save_dir)
parms.start_epoch = checkpoint['epoch']
model.load_state_dict(checkpoint['state_dict'])
optimizer.load_state_dict(checkpoint['optimizer'])

Training resumes at the next epoch, but the loss values make me think the weights are not saved or reapplied.
What am I missing?