Я изучаю «Обучение глубокому подкреплению» и строю свой собственный пример после УЧЕБНОГО ОБУЧЕНИЯ (DQN). получить лучшее действие от модели 3. self.net.train ()
Вопрос в следующем: вызывает ли переход назад и вперед между режимами eval () и train () какой-либо ущерб процессу оптимизации?
Модель включает в себя только слои Linear и BatchNorm1d. Насколько я знаю, при использовании BatchNorm1d необходимо использовать model.eval () для использования модели, поскольку в режимах eval () и train () разные результаты.
При обучении нейронной сети классификации модель. eval () выполняется только после окончания обучения, но в случае «обучения с глубоким подкреплением» обычно используют стратегию, а затем продолжают процесс оптимизации.
Интересно, можно ли переходить назад и вперед между режимами? «безопасен» ли процесс оптимизации?
def strategy(self, state):
# Explore or Exploit
if self.epsilon > random():
action = choice(self.actions)
else:
self.net.eval()
action = self.net(state.unsqueeze(0)).max(1)[1].detach()
self.net.train()