我是靠谱客的博主 碧蓝帽子,最近开发中收集的这篇文章主要介绍imshow报错_NoSuchDisplayException: Cannot connect to "None"报错,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

e66117b05f8f3e3952ad6f452ab71c7f.png

啊……有没有人远程登录服务器,使用openAI遇到过pyglet.canvas.xlib.NoSuchDisplayException: Cannot connect to "None"这个问题啊

有没有解决办法啊……

我找到了一个办法,但是感觉不是一个长久之计

这个问题的原因应该是,openAI的动画需要一个图形化界面来展示,远程登录服务器没有图形化界面,所以报错了。

github大神有人弄了一个“假屏幕”,似乎能一劳永逸,但是好难,而且针对GPU,我这没有GPU啊

我查了一下,应该主要是env.render()这句话引起的报错,因为莫得图形化界面,无法出现视频,所以报错了

然后我用的这个方法:

https://stackoverflow.com/questions/40195740/how-to-run-openai-gym-render-over-a-server​stackoverflow.com

用了大神的几行代码:

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

env = gym.make('Breakout-v0')
env.reset()
#下面这些放在你需要渲染动画的地方,我放在了原来的env.render()的位置
img = plt.imshow(env.render(mode='rgb_array')) # only call this once
for _ in range(100):
    img.set_data(env.render(mode='rgb_array')) # just update the data
    display.display(plt.gcf())
    display.clear_output(wait=True)
    action = env.action_space.sample()
    env.step(action)

就是,自己写一个手动的视频渲染,把每一帧动画的图片绘制出来,连在一起形成动画效果

哇,我服了!厉害!

然后视频就出现了,下面是截图,就是有点卡,有点像用了3G网络,比2G好一点

f57aba214c9da050a33ea6b06fddaf69.png

然后,还有一种方法,能够运行程序,但是没有图

技术总结《OpenAI Gym》​www.meltycriss.com
80abba9bff82f2305e221daf9f776cf6.png

ab3d61a4ec6366fa9186de5082b4fc4f.png

第二种方法好像也行的,保存video的那一步没有试过,但是没有video的情况下可以完美运行。那么为什么不试呢,主要是因为我看不懂

感觉大部分人应该都是远程登录服务器吧,为什么感觉遇到这个问题的人好少,大神都是怎么解决的啊…

6c2f76b78a4f9cec4129d7025d242d50.png

最后

以上就是碧蓝帽子为你收集整理的imshow报错_NoSuchDisplayException: Cannot connect to "None"报错的全部内容,希望文章能够帮你解决imshow报错_NoSuchDisplayException: Cannot connect to "None"报错所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部