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_baselines3
的 evaluate_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/
目录中。
注意事项
-
Gym 和 Gymnasium 的区别:
- 如果你使用的是
Gymnasium
,请确保安装的是最新版本(pip install gymnasium
)。 - 如果你使用的是
Gym
,请确保安装的是兼容版本(pip install gym
)。
- 如果你使用的是
-
渲染性能:
- 在训练过程中实时渲染会显著降低训练速度,建议仅在测试或调试时启用渲染。
-
环境关闭:
- 使用完环境后,务必调用
env.close()
以释放资源。
- 使用完环境后,务必调用
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器