Thanks for the code.
I’ve formatted it for easier debugging. You can add code snippets by wrapping them in three backticks ``` 
Could you try to save the state_dict instead of the complete model via: torch.save(net.state_dict(), path)?
Also, note that you are currently not training the model, since you are zeroing out the gradients after they were calculated.
Move net.zero_grad() further up or down in the code. It should not be called between loss.backward() and optimizer.step().