Views
No views yet
| Hyperparameters | Value |
|---|---|
Learning rate | 0.0002 |
Batch size | 128 |
Buffer size | 100000 |
1# ---------------------- Libraries ------------------------------
2from huggingface_sb3 import load_from_hub, package_to_hub, push_to_hub
3from huggingface_hub import (
4 notebook_login,
5) # To log to our Hugging Face account to be able to upload models to the Hub.
6
7from stable_baselines3 import DQN
8from stable_baselines3.common.evaluation import evaluate_policy
9from stable_baselines3.common.env_util import make_vec_env
10
11# ---------------------------- Main --------------------------------------
12
13# PONERLE NOMBRE CADA VEZ QUE ENTRENE UN NUEVO MODELO
14model_name = "dqn-LunarLander-v2-seed42-12"
15
16# Defino la seed para los envs y los números aleatorios
17Seed=42
18utils.set_seed(Seed)
19
20
21# Se crea el entorno
22
23env = make_vec_env("LunarLander-v2", n_envs=16) # Creo un env vectorizado, 16 envs simultaneos
24env.seed(Seed) # Seed del entorno de entrenamiento
25
26# Se establece el tipo de agente, con sus hiperparametros
27
28# Para toquetear centrarse en: learning rate,buffer size, batch size
29model = DQN(policy = 'MlpPolicy',
30 env = env,
31 learning_rate= 0.0002,
32 learning_starts= 0, # Cuando empieza el proceso de aprendizaje
33 batch_size= 128, # Cada cuanto se da el paso en el gradiente
34 buffer_size=100000, # (size of the replay buffer)
35 gamma = 0.99 , # Factor de descuento, 0.99 por defecto
36 train_freq= 4, # Cada cuanto se actualiza el modelo
37 target_update_interval=15, # Actualizar la red cada '' pasos en el entorno
38 gradient_steps=4, # Cuantos pasos dar de gradiente antes de cada actualizacion del modelo
39 exploration_fraction=0.08, # que fraccion del entrenamiento tiene la exploracion reducida
40 exploration_final_eps=0.05, # Valor final de la probabilidad de realizar una accion aleatoria
41 verbose= 1, # Nivel de informacion que da sobre el proceso (0,1 o 2)
42 optimize_memory_usage=False,
43 seed= Seed
44 )
45
46# Entrenamiento
47
48model.learn(total_timesteps=5000000)
49
50# Se guarda el modelo
51model.save(path = "Historial/" + model_name)
52
53# Se crea el entorno de evaluacion
54eval_env = gym.make("LunarLander-v2")
55eval_env.seed(2*Seed) # Seed del entorno de evaluacion, distinta del de entrenamiento
56
57# Se evalua
58mean_reward, std_reward = evaluate_policy(model, eval_env, n_eval_episodes=10, deterministic=True)
59
60# Guardo los resultados de la evaluacion del modelo
61with open('Historial/' + model_name + '.txt', 'w') as f:
62 f.write(f"mean_reward={mean_reward:.2f} +/- {std_reward}")