You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Stable Baselines3时evaluate_policy设置render=True仍无法渲染窗口

解决make_atari_env环境渲染问题

问题原因

make_atari_env创建的是向量环境(VecEnv),本身没有直接的render_mode参数;直接用gym.make()替换会报错,是因为训练好的A2C模型基于向量环境开发,单个环境的输入维度和模型要求不匹配。

可行解决方案

方案1:通过env_kwargs传递渲染参数

make_atari_env支持env_kwargs参数,可将render_mode='human'传递给底层Atari环境,修改代码如下:

env = make_atari_env(
    enviroment_name,
    n_envs=1,
    seed=0,
    env_kwargs={"render_mode": "human"}
)
env = VecFrameStack(env, n_stack=4)
model = A2C.load('Training/Saved Models/A2C_Breakout_Model', env)
evaluate_policy(model, env, n_eval_episodes=10, render=True)

方案2:用make_vec_env包装单个带渲染的环境

如果make_atari_env的env_kwargs不生效,可手动创建单个带render_mode的环境,再用make_vec_env包装成向量环境:

from stable_baselines3.common.env_util import make_vec_env

env = make_vec_env(
    lambda: gym.make(enviroment_name, render_mode='human'),
    n_envs=1,
    seed=0
)
env = VecFrameStack(env, n_stack=4)
model = A2C.load('Training/Saved Models/A2C_Breakout_Model', env)
evaluate_policy(model, env, n_eval_episodes=10, render=True)

注意事项

  • 必须保证evaluate_policy调用时设置render=True,触发向量环境中子环境的渲染逻辑。
  • 不能直接用gym.make()创建的单个环境评估,模型训练时依赖向量环境的批量输入格式,维度不匹配会引发报错。

内容的提问来源于stack exchange,提问作者Imantion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 23:47:21