Тренувальний цикл DRL
Щоб агент багаторазово взаємодіяв із середовищем, потрібно налаштувати тренувальний цикл.
Багато алгоритмів DRL мають спільну базову структуру:
- Цикл за епізодами
- Внутрішній цикл за кроками в межах епізоду
- На кожному кроці оберіть дію, обчисліть втрату та оновіть мережу
Надано заготовки функцій select_action() і calculate_loss(), які дозволяють запустити код. Також доступні Network та optimizer, визначені у попередній вправі.
Ця вправа є частиною курсу
Глибоке навчання з підкріпленням у Python
Інструкції до вправи
- Переконайтеся, що зовнішній цикл (за епізодами) запускається на десять епізодів.
- Переконайтеся, що внутрішній цикл (за кроками) триває, доки епізод не завершиться.
- Виконайте дію, обрану
select_action(), у середовищіenv. - Наприкінці ітерації внутрішнього циклу оновіть стан перед початком наступного кроку.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
env = gym.make("LunarLander-v2")
# Run ten episodes
for episode in ____:
state, info = env.reset()
done = False
# Run through steps until done
while ____:
action = select_action(network, state)
# Take the action
next_state, reward, terminated, truncated, _ = ____
done = terminated or truncated
loss = calculate_loss(network, state, action, next_state, reward, done)
optimizer.zero_grad()
loss.backward()
optimizer.step()
# Update the state
state = ____
print(f"Episode {episode} complete.")