Zacznij terazZacznij za darmo

Pętla treningowa DRL

Aby agent mógł wielokrotnie doświadczać środowiska, trzeba skonfigurować pętlę treningową.

Większość algorytmów DRL opiera się na tej wspólnej strukturze:

  1. Iteracja przez epizody
  2. Iteracja przez kroki w ramach każdego epizodu
  3. W każdym kroku: wybór akcji, obliczenie straty i aktualizacja sieci

Dysponujesz funkcjami pomocniczymi select_action() i calculate_loss(), które umożliwiają uruchomienie kodu. Do dyspozycji masz również Network i optimizer zdefiniowane w poprzednim ćwiczeniu.

To ćwiczenie jest częścią kursu

Głębokie uczenie ze wzmocnieniem w Pythonie

Zobacz kurs

Instrukcje do ćwiczenia

  • Upewnij się, że pętla zewnętrzna (po epizodach) wykonuje dokładnie dziesięć iteracji.
  • Upewnij się, że pętla wewnętrzna (po krokach) działa aż do zakończenia epizodu.
  • Wykonaj akcję wybraną przez select_action() w środowisku env.
  • Na końcu każdej iteracji pętli wewnętrznej zaktualizuj stan przed rozpoczęciem kolejnego kroku.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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.")
Edytuj i uruchom kod