DRL-träningsloop
För att låta agenten uppleva miljön upprepade gånger behöver du sätta upp en träningsloop.
Många DRL-algoritmer delar samma grundstruktur:
- Loopa igenom episoder
- Loopa igenom steg inom varje episod
- Vid varje steg väljer du en åtgärd, beräknar förlusten och uppdaterar nätverket
Du får tillgång till platshållarfunktionerna select_action() och calculate_loss() som gör att koden kan köras. Network och optimizer från föregående övning är också tillgängliga.
Den här övningen är en del av kursen
Djup förstärkningsinlärning i Python
Övningsinstruktioner
- Se till att den yttre loopen (över episoder) kör i tio episoder.
- Se till att den inre loopen (över steg) kör tills episoden är avslutad.
- Utför den åtgärd som
select_action()väljer i miljönenv. - Uppdatera tillståndet i slutet av varje iteration i den inre loopen innan nästa steg påbörjas.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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.")