--- library_name: stable-baselines3 tags: - LunarLander-v2 - deep-reinforcement-learning - reinforcement-learning - stable-baselines3 model-index: - name: PPO results: - metrics: - type: mean_reward value: 283.49 +/- 13.74 name: mean_reward task: type: reinforcement-learning name: reinforcement-learning dataset: name: LunarLander-v2 type: LunarLander-v2 --- # **PPO** Agent playing **LunarLander-v2** This is a trained model of a **PPO** agent playing **LunarLander-v2** using the [stable-baselines3 library](https://github.com/DLR-RM/stable-baselines3). ## Usage (with Stable-baselines3) ```python from huggingface_sb3 import load_from_hub from stable_baselines3 import PPO from stable_baselines3.common.env_util import make_vec_env from stable_baselines3.common.evaluation import evaluate_policy # Download checkpoint checkpoint = load_from_hub("araffin/ppo-LunarLander-v2", "ppo-LunarLander-v2.zip") # Load the model model = PPO.load(checkpoint) env = make_vec_env("LunarLander-v2", n_envs=1) # Evaluate print("Evaluating model") mean_reward, std_reward = evaluate_policy( model, env, n_eval_episodes=20, deterministic=True, ) print(f"Mean reward = {mean_reward:.2f} +/- {std_reward:.2f}") # Start a new episode obs = env.reset() try: while True: action, _states = model.predict(obs, deterministic=True) obs, rewards, dones, info = env.step(action) env.render() except KeyboardInterrupt: pass ``` ## Training code (with SB3) ```python from stable_baselines3 import PPO from stable_baselines3.common.env_util import make_vec_env from stable_baselines3.common.callbacks import EvalCallback # Create the environment env_id = "LunarLander-v2" n_envs = 16 env = make_vec_env(env_id, n_envs=n_envs) # Create the evaluation envs eval_envs = make_vec_env(env_id, n_envs=5) # Adjust evaluation interval depending on the number of envs eval_freq = int(1e5) eval_freq = max(eval_freq // n_envs, 1) # Create evaluation callback to save best model # and monitor agent performance eval_callback = EvalCallback( eval_envs, best_model_save_path="./logs/", eval_freq=eval_freq, n_eval_episodes=10, ) # Instantiate the agent # Hyperparameters from https://github.com/DLR-RM/rl-baselines3-zoo model = PPO( "MlpPolicy", env, n_steps=1024, batch_size=64, gae_lambda=0.98, gamma=0.999, n_epochs=4, ent_coef=0.01, verbose=1, ) # Train the agent (you can kill it before using ctrl+c) try: model.learn(total_timesteps=int(5e6), callback=eval_callback) except KeyboardInterrupt: pass # Load best model model = PPO.load("logs/best_model.zip") ```