TypeError:JoypadSpace.reset() 收到意外的关键字参数“seed”,当我运行以下代码时,我应该如何解决此问题?

问题描述 投票:0回答:2

当我运行此代码时:

from nes_py.wrappers import JoypadSpace
import gym
import gym_super_mario_bros
from gym_super_mario_bros.actions import SIMPLE_MOVEMENT
from gym.wrappers import GrayScaleObservation
from stable_baselines3.common.vec_env import VecFrameStack,DummyVecEnv
from matplotlib import pyplot as plt

env = gym_super_mario_bros.make('SuperMarioBros-v0',apply_api_compatibility=True,render_mode="human")
env = JoypadSpace(env, SIMPLE_MOVEMENT)
env = GrayScaleObservation(env,keep_dim=True)
env = DummyVecEnv([lambda:env])
env = VecFrameStack(env,4,channels_order='last')
state = env.reset()

我收到以下错误:

我该如何解决这个问题?

python machine-learning reinforcement-learning openai-api openai-gym
2个回答
1
投票

这是 nes-py 中的一个错误(截至此答案版本为 8.2.1)。

JoypadSpace
未正确覆盖
reset()
Wrapper
方法。

单行解决方法:

JoypadSpace.reset = lambda self, **kwargs: self.env.reset(**kwargs)

0
投票

我使用以下代码尝试了此处提出的解决方案:

from nes_py.wrappers import JoypadSpace
JoypadSpace.reset = lambda self, **kwargs: self.env.reset(**kwargs)

from gym_super_mario_bros.actions import SIMPLE_MOVEMENT
env = JoypadSpace(env, SIMPLE_MOVEMENT)

from gym.wrappers import GrayScaleObservation
env = GrayScaleObservation(env, keep_dim=True)

from stable_baselines3.common.vec_env import DummyVecEnv    
env = DummyVecEnv([lambda: env])

gameState = env.reset()
obs, _, _, _, _ = env.step(1)
env.close()

但是这次我得到了错误:


值错误

  Traceback (most recent call last) 

  <ipython-input-3-7521e0795c59> in <cell line: 37>()

  35 

  36 # Size of frame output

  ---> 37 gameState = env.reset()

  38 obs, _, _, _, _ = env.step(1)

  39 env.close()

  /usr/local/lib/python3.10/dist-packages/stable_baselines3/common/vec_env/dummy_vec_env.py in reset(self)

  74 def reset(self) -> VecEnvObs:

  75 for env_idx in range(self.num_envs):

  ---> 76 obs, self.reset_infos[env_idx] = self.envs[env_idx].reset(seed=self._seeds[env_idx])

  77 self._save_obs(env_idx, obs)

  78 # Seeds are only used once

  ValueError: too many values to unpack (expected 2)

这个问题如何解决?

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