DRL ciclo de treinamento

Para permitir que o agente experimente o ambiente repetidamente, você precisa configurar um loop de treinamento.

Muitos algoritmos do DRL têm em comum essa estrutura central:

  1. Percorrer os episódios
  2. Percorrer as etapas de cada episódio
  3. Em cada etapa, escolha uma ação, calcule a perda e atualize a rede

Você recebe as funções de espaço reservado select_action() e calculate_loss() que permitem que o código seja executado. Os sites Network e optimizer definidos no exercício anterior também estão disponíveis para você.

Este exercício faz parte do curso

Aprendizado por reforço profundo em Python

Ver Curso

Instruções de exercício

  • Certifique-se de que o loop externo (sobre episódios) seja executado por dez episódios.
  • Certifique-se de que o loop interno (sobre as etapas) seja executado até que o episódio seja concluído.
  • Execute a ação selecionada por select_action() no ambiente env.
  • No final de uma iteração de loop interno, atualize o estado antes de iniciar a próxima etapa.

Exercício interativo prático

Experimente este exercício preenchendo este código de exemplo.

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.")