DRL bucle de entrenamiento
Para permitir que el agente experimente el entorno repetidamente, tienes que establecer un bucle de entrenamiento.
Muchos algoritmos de DRL tienen en común esta estructura central:
- Recorre los episodios
- Recorre en bucle los pasos de cada episodio
- En cada paso, elige una acción, calcula la pérdida y actualiza la red
Se te proporcionan las funciones select_action()
y calculate_loss()
que permiten ejecutar el código. También tienes a tu disposición las direcciones Network
y optimizer
definidas en el ejercicio anterior.
Este ejercicio forma parte del curso
Aprendizaje profundo por refuerzo en Python
Instrucciones de ejercicio
- Asegúrate de que el bucle exterior (sobre episodios) se ejecuta durante diez episodios.
- Asegúrate de que el bucle interno (sobrepasar los pasos) se ejecuta hasta que se complete el episodio.
- Realiza la acción seleccionada por
select_action()
en el entornoenv
. - Al final de una iteración del bucle interno, actualiza el estado antes de iniciar el paso siguiente.
Ejercicio interactivo práctico
Pruebe este ejercicio completando este código de muestra.
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.")