OpenAI Gym中Ant-v4环境渲染失败问题求助
Gymnasium渲染Ant-v4报错:Unexpected mode: None的解决办法
问题重现
运行以下代码时触发AttributeError: Unexpected mode: None, expected modes: human, rgb_array, or depth_array:
import gymnasium as gym env = gym.make("Ant-v4") observation = env.reset() for _ in range(1000): env.render() action = env.action_space.sample() observation, reward, done, info = env.step(action) if done: observation = env.reset() env.close()
已尝试虚拟环境安装依赖,问题依旧。
核心原因
Gymnasium要求调用render()时必须明确指定渲染模式,不能留空(默认值为None),可选模式包括:
human:弹出可视化窗口显示环境rgb_array:返回环境的RGB图像数组depth_array:返回环境的深度图像数组
解决步骤
方法1:调用render时指定模式
直接修改env.render()为:
env.render(mode="human")
方法2:创建环境时指定默认渲染模式
更简便的方式是在gym.make时传入render_mode参数,后续无需再给render()传参:
env = gym.make("Ant-v4", render_mode="human")
额外修正:适配Gymnasium API
注意Gymnasium的API和旧版Gym有差异,原代码的返回值接收不符合规范,会触发其他报错,需要同步修正:
reset()返回(observation, info),需要接收两个值step()返回(observation, reward, terminated, truncated, info),需要接收五个值,且episode结束的判断是terminated or truncated
修正后的完整代码
import gymnasium as gym # 创建环境时指定渲染模式 env = gym.make("Ant-v4", render_mode="human") # 重置环境,接收两个返回值 observation, _ = env.reset() for _ in range(1000): env.render() action = env.action_space.sample() # 接收step的五个返回值 observation, reward, terminated, truncated, info = env.step(action) # 判断episode是否结束 if terminated or truncated: observation, _ = env.reset() env.close()
内容的提问来源于stack exchange,提问作者Rebecca Ansell
相关产品推荐
相关产品推荐

