How to save the best model?

Suppose that I train my model for n epochs, and that I want to save the model with the highest accuracy on the development set. Could I use this code to save the model:

for epoch in range(n_epochs): 

(...)

 if    accuracy > best_accuracy: 
       torch.save(model, 'best-model.pt')
       torch.save(model.state_dict(), 'best-model-parameters.pt')

For instance if I want to test this model later on a test set :).

2 Likes

Hi, Talita:
You can save your model by either of the following methods.

# Method 1
torch.save(model, 'best-model.pt') 
# Method 2
torch.save(model.state_dict(), 'best-model-parameters.pt') # official recommended

The difference between two methods is that the first one saves the whole model which includes project-specific classes and your best parameters, while the second one just saves your best parameters.:smiley:

By the way, you can load the model by these codes.

the_model = TheModelClass(*args, **kwargs)
the_model.load_state_dict(torch.load(PATH))

References:

  1. recommend-saving-models
6 Likes