CommencerCommencer gratuitement

Boucle de formation DRL

Afin de permettre à l'agent d'expérimenter l'environnement à plusieurs reprises, il est nécessaire de configurer une boucle d'entraînement.

De nombreux algorithmes DRL partagent cette structure fondamentale :

  1. Parcourir les épisodes
  2. Parcourir les étapes de chaque épisode
  3. À chaque étape, sélectionnez une action, calculez la perte et mettez à jour le réseau.

Vous disposez des fonctions d'select_action(), calculate_loss() qui permettent au code de s'exécuter. Les variables Network et optimizer définies lors de l'exercice précédent sont également à votre disposition.

Cet exercice fait partie du cours

Apprentissage par renforcement profond en Python

Afficher le cours

Instructions

  • Veuillez vous assurer que la boucle externe (sur les épisodes) s'exécute pendant dix épisodes.
  • Veuillez vous assurer que la boucle interne (sur les étapes) s'exécute jusqu'à ce que l'épisode soit terminé.
  • Veuillez effectuer l'action sélectionnée par select_action() dans l'environnement env.
  • À la fin d'une itération de boucle interne, veuillez mettre à jour l'état avant de passer à l'étape suivante.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

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.")
Modifier et exécuter le code