Я обучаю несколько простых нейронных сетей для обучения подкреплению в Pytorch.В конце обучения я сохраняю модель следующим образом:
torch.save(self.policy_NN.state_dict(), self.model_fname)
На данный момент все идет хорошо.Затем позже, в другом сценарии, я загружаю его снова, вот так:
self.policy_NN.load_state_dict(torch.load(model_fname))
И затем просто разыгрываю эпизод, как будто тренировка никогда не прекращалась (за исключением того, что я больше не занимаюсь изучением DQN, этопросто жадное действие в каждой точке).Поэтому я ожидаю, что он будет вести себя в основном так же, как когда я его сохранял.
Однако всякий раз, когда я загружаю его, он ведет себя совершенно по-другому, до такой степени, что кажется, что он не учился вообще, прежде чем я его сохранил.Например, если я посмотрю на последние 1000 временных шагов учебного сеанса, он получит много наград, но после загрузки он не получит ничего.
Я подтвердил (выполнив print(self.policy_NN.state_dict())
)что вес и смещение фактически одинаковы при сохранении модели и при ее повторной загрузке.
Что может происходить?Есть ли в сети что-то еще, что не может быть каким-то образом спасено?