微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

openai-gym经典控件在centos服务器上呈现问题

如何解决openai-gym经典控件在centos服务器上呈现问题

我正在与使用健身房中的CartPole-v0的RL合作实验室一起玩。我通过连接到远程centOS 7.3服务器(而不是Google驱动器)的jupyter打开了iPython笔记本。以下代码可在Google colab下正确呈现直角图,但无法在我的jupyter设置下呈现:

!pip install gym[classic_control]
import gym
env = gym.make('CartPole-v0')
env.reset()
img = env.render('rgb_array')
plt.imshow(img)

这是我启动Jupyter笔记本的方式:

xvfb-run -a -s "-screen 0 1400x900x24" jupyter notebook

显然,渲染的图像具有未初始化的尺寸或0尺寸。无论是否使用Jupyter,都是如此。

这是完整的错误

enter image description here

我在pyglet/image/__init__.py中的错误之前打印了该行

def get_image_data(self):
    # xxx = glubyte * (len(self.format) * self.width * self.height)
    print(glubyte,len(self.format),self.width,self.height)  # my code
    buffer = (glubyte * (len(self.format) * self.width * self.height))()

结果为(4 0 0)(4 1551512832 274094153),据我推断宽度和高度未初始化。但是我对内部不够了解,无法进一步调试。在前一种情况下,MemoryError变成某种错误,表明无法渲染大小为零的图像。

任何见识都值得赞赏。以下是一些相关线程:

How to run OpenAI Gym .render() over a server

https://blog.csdn.net/chestnutss/article/details/100734523

解决方法

我通过以下一系列命令设法解决了环境问题:

sudo yum install python-xvfbwrapper.noarch
sudo yum install mesa-dri-drivers
sudo yum install xorg-devel libglu1-mesa libgl1-mesa-devel libxinerama1 libxcursor1
sudo yum install glxinfo
sudo yum -y install freeglut-devel

然后,以下渲染在连接到服务器的Jupyter浏览器笔记本中起作用

import gym
import matplotlib.pyplot as plt

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

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?