| Serialization semantics | |
| ======================= | |
| Best practices | |
| -------------- | |
| .. _recommend-saving-models: | |
| Recommended approach for saving a model | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| There are two main approaches for serializing and restoring a model. | |
| The first (recommended) saves and loads only the model parameters:: | |
| torch.save(the_model.state_dict(), PATH) | |
| Then later:: | |
| the_model = TheModelClass(*args, **kwargs) | |
| the_model.load_state_dict(torch.load(PATH)) | |
| The second saves and loads the entire model:: | |
| torch.save(the_model, PATH) | |
| Then later:: | |
| the_model = torch.load(PATH) | |
| However in this case, the serialized data is bound to the specific classes | |
| and the exact directory structure used, so it can break in various ways when | |
| used in other projects, or after some serious refactors. |