Проблема с созданием DummyVecEnv с помощью Gym_super_mario_bros.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Проблема с созданием DummyVecEnv с помощью Gym_super_mario_bros.

Сообщение Anonymous »


РЕЗЮМЕ: Все, что я хочу сделать, это использовать конструктор 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, поэтому извините, если я что-то упускаю.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»