OpenAI Gym 步骤功能即使在给它 5 个变量解包后也不起作用

问题描述 投票:0回答:1
done = True
env.reset()
for step in range(5000):
    action = env.action_space.sample()
    obs, reward, terminated, truncated, info = env.step(action)
    done = terminated or truncated

    if done:
       env.reset()

env.close()

通过运行官方文档给出的以下代码,我仍然收到过时的错误

ValueError Traceback(最近一次调用最后一次) /UsersProjects/GAME_AI_RL/Super_Mario/main.ipynb 单元格 8 第 5 行 3 表示范围内的步长(5000): 4 动作 = env.action_space.sample() ----> 5 obs,奖励,终止,截断,info = env.step(action) 6 完成 = 终止或截断 8 如果完成:

文件 ~/miniforge3/envs/mlp/lib/python3.8/site-packages/nes_py/wrappers/joypad_space.py:74,在 JoypadSpace.step(self, action) 59 “”” 60 使用给定的操作采取步骤。 61 (...) 71 72、“”“ 73 # 采取步骤并记录输出 ---> 74 return self.env.step(self._action_map[action])

文件 ~/miniforge3/envs/mlp/lib/python3.8/site-packages/gym/wrappers/time_limit.py:50,在 TimeLimit.step(self, action) 39 def 步骤(自身,动作): 40 """逐步遍历环境,如果经过的步数超过

max_episode_steps
,则截断。 41 42 参数: (...) ... ---> 50 个观察、奖励、终止、截断、info = self.env.step(action) 51 self._elapsed_steps += 1 53 如果 self._elapsed_steps >= self._max_episode_steps:

ValueError:没有足够的值来解压(预期为 5 个,实际为 4)

系统是MACOS M1,运行在虚拟环境中。

我首先写了 4 个用于解包的变量,快速搜索告诉我它已更新为 5,所以我将其设置为 5,但它仍然显示相同的错误,我尝试重新启动内核,重新安装库,在不同的Python版本。

python openai-api openai-gym
1个回答
0
投票

根据您使用的

gym(nasium)
版本,有一些更改。自
gym
v0.26.0 起,关于您的问题有 2 个重要更改:

Step 终止/截断 - Env.step 函数返回 5 个值,而不是之前的 4 个值(观察、奖励、终止、截断、信息)。

你似乎已经应用了这个。根据版本的不同,您可能需要将其改回 4。

重置信息 - Env.reset 函数返回两个值(obs 和 info),对于健身房包装器和环境没有 return_info 参数。这对于某些为每个操作提供操作屏蔽信息的环境非常重要,而重置是不可能的。

重置环境现在返回 2 个值:

obs, info = env.reset(seed=None)

但是,由于gym-super-mario-bros环境使用旧版本的

gym
,您必须将输出变量的数量调整为4并使用旧版本的
gym
才能使其正常工作。这是一个版本
gym<0.26.0

© www.soinside.com 2019 - 2024. All rights reserved.