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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 21:13:13