Как сделать тренажерный зал OpenAI в Google Colab? - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь использовать тренажерный зал OpenAI в Google Colab. Поскольку ноутбук работает на удаленном сервере, я не могу отобразить среду спортзала.

Я нашел какое-то решение для ноутбука Jupyter, однако эти решения не работают с colab, поскольку у меня нет доступа к удаленному серверу.

Интересно, кто-нибудь знает обходной путь для этого, который работает с Google Colab?

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Попробуйте это: -

!apt-get install python-opengl -y

!apt install xvfb -y

!pip install pyvirtualdisplay

!pip install piglet


from pyvirtualdisplay import Display
Display().start()

import gym
from IPython import display
import matplotlib.pyplot as plt
%matplotlib inline

env = gym.make('CartPole-v0')
env.reset()
img = plt.imshow(env.render('rgb_array')) # only call this once
for _ in range(40):
    img.set_data(env.render('rgb_array')) # just update the data
    display.display(plt.gcf())
    display.clear_output(wait=True)
    action = env.action_space.sample()
    env.step(action)

Это сработало для меня, поэтому я думаю, что это должно сработать и для вас.

0 голосов
/ 02 октября 2018

Неправильный ответ Коракота.

Вы действительно можете рендерить OpenAi Gym в колаборатории, медленно используя не что иное, как matplotlib.

Вот как:

установка xvfb и другие зависимости

!apt-get install -y xvfb python-opengl > /dev/null 2>&1

& установить Пивиртуальный дисплей :

!pip install gym pyvirtualdisplay > /dev/null 2>&1

затем импортируйте все свои библиотеки, включая matplotlib & ipythondisplay :

import gym
import numpy as np
import matplotlib.pyplot as plt
from IPython import display as ipythondisplay

, затем вы хотите импортировать Display из дисплея pyvirtual и инициализировать ваш размер экрана, в этом примере 400x300 ...:

from pyvirtualdisplay import Display
display = Display(visible=0, size=(400, 300))
display.start()

И последнее, но не менее важное: функционально "rgb_array" рендеринг из спортзала , рендеринг в переменную "Screen", а затем построение экранной переменной с помощью Matplotlib! (отображается косвенно с использованием дисплея Ipython)

env = gym.make("CartPole-v0")
env.reset()
prev_screen = env.render(mode='rgb_array')
plt.imshow(prev_screen)

for i in range(50):
  action = env.action_space.sample()
  obs, reward, done, info = env.step(action)
  screen = env.render(mode='rgb_array')

  plt.imshow(screen)
  ipythondisplay.clear_output(wait=True)
  ipythondisplay.display(plt.gcf())

  if done:
    break

ipythondisplay.clear_output(wait=True)
env.close()

Ссылка на мою рабочую тетрадь для демонстрации тетради в лаборатории

https://colab.research.google.com/drive/16gZuQlwxmxR5ZWYLZvBeq3bTdFfb1r_6

Примечание: не все среды Gym поддерживают режим рендеринга "rgb_array", но большинство базовых поддерживает.

...