Проблема с конструктором DummyVecEnv в Gym_super_mario_brosPython

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

Сообщение Anonymous »

РЕЗЮМЕ: Все, что я хочу сделать, это использовать конструктор DummyVecEnv, чтобы обернуть среду моего спортзала, т.е.

Код: Выделить всё

env = DummyVecEnv([lambda: env])
но при этом я постоянно получаю ошибки. В настоящее время использую https://pypi.org/project/gym-super-mario-bros/ в качестве оболочки тренажерного зала для Super Mario. У меня такое ощущение, что я неправильно понимаю, какие аргументы я должен предоставить конструктору, но я новичок в Python и мне трудно понять, чего мне не хватает.
Мне трудно использовать конструктор DummyVecEnv вокруг среды, которую я возвращаю из Gym_super_mario_bros.make(). Я продолжаю получать сообщение об ошибке: «Вы пытались создать несколько сред, но функция их создания вернула один и тот же экземпляр вместо создания разных объектов».
Сначала я пытался обернуть свою среду в DummyVecEnv так, как я видел на многих форумах:

Код: Выделить всё

env = gym_super_mario_bros.make("SuperMarioBros-v0")
env = JoypadSpace(env, SIMPLE_MOVEMENT)
env = GrayScaleObservation(env, keep_dim=True)
env = DummyVecEnv([lambda: env]) #This line errors
но у меня возникла такая ошибка:

Код: Выделить всё

File c:\Users\truem\AppData\Local\Programs\Python\Python311\Lib\site-packages\stable_baselines3\common\vec_env\dummy_vec_env.py:30, in DummyVecEnv.init(self, env_fns)
29 def init(self, env_fns: List[Callable[[], gym.Env]]):
---> 30     self.envs = [_patch_env(fn()) for fn in env_fns]
31     if len(set([id(env.unwrapped) for env in self.envs])) != len(self.envs):
32         raise ValueError(
33             "You tried to create multiple environments, but the function to create them returned the same instance "
34             "instead of creating different objects. "(...)
39             "Please read https://github.com/DLR-RM/stable-baselines3/issues/1151 for more information."
40         )
Итак, я попытался выполнить исправление, указанное в ссылке на github, а также примеры, приведенные в документации.
https://stable- baselines.readthedocs.io/en/master/guide/examples.html
Я пошел дальше и создал новую вспомогательную функцию create_default_environment, которая должна создавать новые экземпляры env и возвращать их, но, несмотря на это, он по-прежнему не работает.
Вот как сейчас выглядит мой код:

Код: Выделить всё

#wrap my env creation in a function
def create_default_environment():
newEnv = gym_super_mario_bros.make("SuperMarioBros-v0")
newEnv = JoypadSpace(newEnv, SIMPLE_MOVEMENT)
return GrayScaleObservation(newEnv, keep_dim=True)
#Create lambda in a list which calls helper function
env = DummyVecEnv([lambda: create_default_environment()]) #still failing
Я пошел дальше и обернул свою первоначальную конструкцию env во вспомогательную функцию create_default_environment(), которая, как я проверил, возвращает новый экземпляр env при каждом вызове. Затем я использовал эту оболочку для подключения к конструктору DummyVecEnv:

Код: Выделить всё

env = DummyVecEnv([lambda: create_default_environment()])
Но компилятор по-прежнему жалуется, что мой список переданных функций не возвращает новые экземпляры.
Я пытался эмулировать то, что вижу в примере кода, который предоставляет базовые показатели:
р>

Код: Выделить всё

from stable_baselines.common.vec_env import DummyVecEnv, VecNormalize
from stable_baselines import PPO2

env = DummyVecEnv(\[lambda: gym.make("HalfCheetahBulletEnv-v0")]) #why does this work but mine does not?
но я не уверен, что делаю не так. Новичок в Python, поэтому извините, если я что-то упускаю.

Подробнее здесь: https://stackoverflow.com/questions/780 ... mario-bros
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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