Проблема с созданием DummyVecEnv с помощью Gym_super_mario_bros. ⇐ Python
Проблема с созданием DummyVecEnv с помощью Gym_super_mario_bros.
РЕЗЮМЕ: Все, что я хочу сделать, это использовать конструктор DummyVecEnv, чтобы обернуть среду моего спортзала, т.е. env = DummyVecEnv([lambda: env]) но при этом я постоянно получаю ошибки. В настоящее время использую https://pypi.org/project/gym-super-mario-bros/ в качестве оболочки спортзала для Super Mario.
У меня возникли трудности с использованием конструктора DummyVecEnv в среде, которую я возвращаю из gym_super_mario_bros.make(). Я продолжаю получать сообщение об ошибке: «Вы пытались создать несколько сред, но функция их создания вернула один и тот же экземпляр вместо создания разных объектов».
Сначала я пытался обернуть свою среду в DummyVecEnv так, как это делалось на многих форумах:
env = Gym_super_mario_bros.make("SuperMarioBros-v0") окр = JoypadSpace (окр., SIMPLE_MOVEMENT) env = GrayScaleObservation (env, Keep_dim = True) env = DummyVecEnv([lambda: env]) #Ошибки в этой строке но у меня возникла такая ошибка:
Файл c:\Users\truem\AppData\Local\Programs\Python\Python311\Lib\site-packages\stable_baselines3\common\vec_env\dummy_vec_env.py:30, в DummyVecEnv.init(self, env_fns) ) 29 def init(self, env_fns: List[Callable[[], Gym.Env]]): ---> 30 self.envs = [_patch_env(fn()) для fn в env_fns] 31 if len(set([id(env.unwrapped) for env в self.envs])) != len(self.envs): 32 поднять ValueError( 33 «Вы пытались создать несколько сред, но функция их создания вернула один и тот же экземпляр» 34 «вместо того, чтобы создавать разные предметы». (...) 39 «Пожалуйста, прочитайте https://github.com/DLR-RM/stable-baselines3/issues/1151 для получения дополнительной информации». 40 ) Итак, я попытался выполнить исправление, указанное по ссылке на github, а также примеры, приведенные в документации
https://stable-baselines.readthedocs.io ... mples.html
Я пошел дальше и создал новую вспомогательную функцию create_default_environment, которая должна создавать новые экземпляры env и возвращать их, но, несмотря на это, она все еще не работает.
Вот как сейчас выглядит мой код:
#оберните мое создание env в функцию защита create_default_environment(): newEnv = Gym_super_mario_bros.make("SuperMarioBros-v0") newEnv = JoypadSpace (newEnv, SIMPLE_MOVEMENT) вернуть GrayScaleObservation (newEnv, Keep_dim = True) #Создаем лямбду в списке, который вызывает вспомогательную функцию env = DummyVecEnv([лямбда: create_default_environment()]) # все еще не удается Я пошел дальше и обернул свою первоначальную конструкцию env во вспомогательную функцию create_default_environment(), которая, как я проверил, возвращает новый экземпляр env при каждом вызове. Затем я использовал эту оболочку для подключения к конструктору DummyVecEnv: env = DummyVecEnv([lambda: create_default_environment()]) Но компилятор по-прежнему жалуется, что мой список переданных функций не возвращает новые экземпляры. Я пытался подражать тому, что вижу в примере кода, который предоставляют базовые показатели:
из стабильного_baselines.common.vec_env import DummyVecEnv, VecNormalize из стабильных_базовых линий импортировать PPO2 env = DummyVecEnv(\[lambda: Gym.make("HalfCheetahBulletEnv-v0")]) #почему это работает, а у меня нет? но я не уверен, что делаю не так. Новичок в Python, поэтому извините, если я что-то упускаю.
РЕЗЮМЕ: Все, что я хочу сделать, это использовать конструктор DummyVecEnv, чтобы обернуть среду моего спортзала, т.е. env = DummyVecEnv([lambda: env]) но при этом я постоянно получаю ошибки. В настоящее время использую https://pypi.org/project/gym-super-mario-bros/ в качестве оболочки спортзала для Super Mario.
У меня возникли трудности с использованием конструктора DummyVecEnv в среде, которую я возвращаю из gym_super_mario_bros.make(). Я продолжаю получать сообщение об ошибке: «Вы пытались создать несколько сред, но функция их создания вернула один и тот же экземпляр вместо создания разных объектов».
Сначала я пытался обернуть свою среду в DummyVecEnv так, как это делалось на многих форумах:
env = Gym_super_mario_bros.make("SuperMarioBros-v0") окр = JoypadSpace (окр., SIMPLE_MOVEMENT) env = GrayScaleObservation (env, Keep_dim = True) env = DummyVecEnv([lambda: env]) #Ошибки в этой строке но у меня возникла такая ошибка:
Файл c:\Users\truem\AppData\Local\Programs\Python\Python311\Lib\site-packages\stable_baselines3\common\vec_env\dummy_vec_env.py:30, в DummyVecEnv.init(self, env_fns) ) 29 def init(self, env_fns: List[Callable[[], Gym.Env]]): ---> 30 self.envs = [_patch_env(fn()) для fn в env_fns] 31 if len(set([id(env.unwrapped) for env в self.envs])) != len(self.envs): 32 поднять ValueError( 33 «Вы пытались создать несколько сред, но функция их создания вернула один и тот же экземпляр» 34 «вместо того, чтобы создавать разные предметы». (...) 39 «Пожалуйста, прочитайте https://github.com/DLR-RM/stable-baselines3/issues/1151 для получения дополнительной информации». 40 ) Итак, я попытался выполнить исправление, указанное по ссылке на github, а также примеры, приведенные в документации
https://stable-baselines.readthedocs.io ... mples.html
Я пошел дальше и создал новую вспомогательную функцию create_default_environment, которая должна создавать новые экземпляры env и возвращать их, но, несмотря на это, она все еще не работает.
Вот как сейчас выглядит мой код:
#оберните мое создание env в функцию защита create_default_environment(): newEnv = Gym_super_mario_bros.make("SuperMarioBros-v0") newEnv = JoypadSpace (newEnv, SIMPLE_MOVEMENT) вернуть GrayScaleObservation (newEnv, Keep_dim = True) #Создаем лямбду в списке, который вызывает вспомогательную функцию env = DummyVecEnv([лямбда: create_default_environment()]) # все еще не удается Я пошел дальше и обернул свою первоначальную конструкцию env во вспомогательную функцию create_default_environment(), которая, как я проверил, возвращает новый экземпляр env при каждом вызове. Затем я использовал эту оболочку для подключения к конструктору DummyVecEnv: env = DummyVecEnv([lambda: create_default_environment()]) Но компилятор по-прежнему жалуется, что мой список переданных функций не возвращает новые экземпляры. Я пытался подражать тому, что вижу в примере кода, который предоставляют базовые показатели:
из стабильного_baselines.common.vec_env import DummyVecEnv, VecNormalize из стабильных_базовых линий импортировать PPO2 env = DummyVecEnv(\[lambda: Gym.make("HalfCheetahBulletEnv-v0")]) #почему это работает, а у меня нет? но я не уверен, что делаю не так. Новичок в Python, поэтому извините, если я что-то упускаю.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Метод SUPER() в Python 3.11 — «Ошибка выполнения: super(): нет аргументов»
Anonymous » » в форуме Python - 0 Ответы
- 95 Просмотры
-
Последнее сообщение Anonymous
-