Ciclo di training DRL
Per permettere all'agente di fare esperienza ripetutamente nell'ambiente, devi impostare un ciclo di training.
Molti algoritmi di DRL condividono questa struttura di base:
- Cicla sugli episodi
- All'interno di ogni episodio, cicla sugli step
- A ogni step, scegli un'azione, calcola la loss e aggiorna la rete
Ti vengono fornite funzioni segnaposto select_action() e calculate_loss() che consentono l'esecuzione del codice. Anche la Network e l'optimizer definiti nell'esercizio precedente sono a tua disposizione.
Questo esercizio fa parte del corso
Deep Reinforcement Learning in Python
Istruzioni dell'esercizio
- Assicurati che il ciclo esterno (sugli episodi) venga eseguito per dieci episodi.
- Assicurati che il ciclo interno (sugli step) continui fino al completamento dell'episodio.
- Esegui nel contesto
envl'azione selezionata daselect_action(). - Al termine di ogni iterazione del ciclo interno, aggiorna lo stato prima di iniziare lo step successivo.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
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.")