stable_baselines3实时显示CartPole环境方法

在使用 stable_baselines3 训练强化学习模型时,默认情况下,CartPole 环境(或其他 Gym 环境)不会显示图形界面。如果你希望在训练过程中可视化环境,可以通过以下方法实现。


方法 1:使用 render_mode 参数(Gymnasium 环境)

如果你使用的是 Gymnasium(OpenAI Gym 的维护分支),可以通过 render_mode 参数直接启用渲染:

from stable_baselines3.common.env_util import make_vec_env
import gymnasium as gym

# 创建环境并启用渲染
env = make_vec_env("CartPole-v1", n_envs=1, env_kwargs={"render_mode": "human"})

# 初始化环境
obs = env.reset()

# 运行一个简单的随机动作循环
for _ in range(100):
    action = env.action_space.sample()  # 随机选择动作
    obs, reward, done, info = env.step(action)  # 执行动作
    env.render()  # 渲染环境
    if done:
        obs = env.reset()

# 关闭环境
env.close()

方法 2:手动调用 render() 函数

如果你使用的是标准的 Gym 环境(非 Gymnasium),可以通过手动调用 env.render() 来显示环境:

from stable_baselines3.common.env_util import make_vec_env
import gym

# 创建环境
env = make_vec_env("CartPole-v1", n_envs=1)

# 初始化环境
obs = env.reset()

# 运行一个简单的随机动作循环
for _ in range(100):
    action = env.action_space.sample()  # 随机选择动作
    obs, reward, done, info = env.step(action)  # 执行动作
    env.render()  # 渲染环境
    if done:
        obs = env.reset()

# 关闭环境
env.close()

方法 3:使用 evaluate_policy 可视化训练结果

如果你已经训练了一个模型,可以使用 stable_baselines3evaluate_policy 函数来可视化模型的表现:

from stable_baselines3 import PPO
from stable_baselines3.common.env_util import make_vec_env
from stable_baselines3.common.evaluation import evaluate_policy

# 创建环境
env = make_vec_env("CartPole-v1", n_envs=1)

# 加载或训练模型
model = PPO("MlpPolicy", env, verbose=1)
model.learn(total_timesteps=10000)

# 评估模型并渲染环境
mean_reward, std_reward = evaluate_policy(model, env, n_eval_episodes=10, render=True)

# 关闭环境
env.close()

方法 4:使用 VecVideoRecorder 录制视频

如果你想录制环境的视频而不是实时显示,可以使用 VecVideoRecorder

from stable_baselines3.common.env_util import make_vec_env
from stable_baselines3.common.vec_env import VecVideoRecorder
import gym

# 创建环境
env = make_vec_env("CartPole-v1", n_envs=1)

# 包装环境以录制视频
env = VecVideoRecorder(env, "videos/", record_video_trigger=lambda x: x == 0, video_length=200)

# 初始化环境
obs = env.reset()

# 运行一个简单的随机动作循环
for _ in range(200):
    action = env.action_space.sample()  # 随机选择动作
    obs, reward, done, info = env.step(action)  # 执行动作
    if done:
        obs = env.reset()

# 关闭环境
env.close()

视频将保存到 videos/ 目录中。


注意事项

  1. Gym 和 Gymnasium 的区别

    • 如果你使用的是 Gymnasium,请确保安装的是最新版本(pip install gymnasium)。
    • 如果你使用的是 Gym,请确保安装的是兼容版本(pip install gym)。
  2. 渲染性能

    • 在训练过程中实时渲染会显著降低训练速度,建议仅在测试或调试时启用渲染。
  3. 环境关闭

    • 使用完环境后,务必调用 env.close() 以释放资源。
posted @   猴子吃桃_Q  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
点击右上角即可分享
微信分享提示