Hi SimonW,
There is nothing special with my save&load.
I save model in hardcoded times in data/time/modelname.pkl
# Save the Model
end = time.time()
for i in range(6):
if (end - self.start >= self.savedTimes[i] and not self.saved[i]):
    self.saved[i] = True
    os.makedirs(os.path.dirname('data/' + time.strftime("%Y%m%d-%H%M%S", time.localtime(self.start)) + str("/") + self.savedFileNames[i]), exist_ok=True)
    torch.save(self.player.state_dict(), 'data/' + time.strftime("%Y%m%d-%H%M%S", time.localtime(self.start)) + str("/") + self.savedFileNames[i])

Load
    def __init__(self, game, color, modelName, size):
        self.game = game
        self.color = color
        if size == 32:
            self.model = Net32()
        elif size == 64:
            self.model = Net64()
        elif size == 128:
            self.model = Net128()

        self.model.load_state_dict(torch.load(modelName))

p.s. Net32, Net64, Net128 have the same content except hidden neuron number. Wrote that in hurry.