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:
- Percorrer os episódios
- Percorrer as etapas de cada episódio
- 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
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 ambienteenv
. - 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.")