Sia*_*him 7 openai-gym google-colaboratory
我正在尝试在Google colab中使用OpenAI Gym。由于笔记本计算机在远程服务器上运行,因此我无法渲染健身房的环境。
我找到了一些适用于Jupyter笔记本的解决方案,但是,这些解决方案无法与colab配合使用,因为我无权访问远程服务器。
我想知道是否有人知道可以与Google Colab一起使用的解决方法?
小智 7
Korakot的答案不正确。
的确,您可以使用matplotlib慢慢地使用类似的方法缓慢地渲染OpenAi Gym。
这是如何做:
安装xvfb和其他依赖项
!apt-get install -y xvfb python-opengl > /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)
并安装pyvirtual显示器:
!pip install gym pyvirtualdisplay > /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)
然后导入所有库,包括matplotlib和ipythondisplay:
import gym
import numpy as np
import matplotlib.pyplot as plt
from IPython import display as ipythondisplay
Run Code Online (Sandbox Code Playgroud)
那么您想从虚拟屏幕导入Display并初始化屏幕尺寸,在此示例中为400x300 ...:
from pyvirtualdisplay import Display
display = Display(visible=0, size=(400, 300))
display.start()
Run Code Online (Sandbox Code Playgroud)
最后但并非最不重要的一点是,使用功能强大的Gym的“ 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()
Run Code Online (Sandbox Code Playgroud)
链接到我正在工作的协作笔记本演示卡特尔:
https://colab.research.google.com/drive/16gZuQlwxmxR5ZWYLZvBeq3bTdFfb1r_6
注意:并非所有的Gym Environments都支持“ rgb_array”渲染模式,但是大多数基本环境都支持。
小智 6
尝试这个 :-
!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)
Run Code Online (Sandbox Code Playgroud)
我最近必须解决同样的问题,并用我的解决方案写了一篇博客文章。为了便于参考,我重新发布了 TLDR;版本在这里。
将此代码粘贴到 Colab 中的单元格中并运行它以安装所有依赖项。
%%bash
# install required system dependencies
apt-get install -y xvfb x11-utils
# install required python dependencies (might need to install additional gym extras depending)
pip install gym[box2d]==0.17.* pyvirtualdisplay==0.2.* PyOpenGL==3.1.* PyOpenGL-accelerate==3.1.*
Run Code Online (Sandbox Code Playgroud)
然后在后台启动虚拟显示。
import pyvirtualdisplay
_display = pyvirtualdisplay.Display(visible=False, # use False with Xvfb
size=(1400, 900))
_ = _display.start()
Run Code Online (Sandbox Code Playgroud)
在博客文章中,我还提供了一个示例模拟演示,证明上述内容确实有效。
归档时间: |
|
查看次数: |
6055 次 |
最近记录: |