jupyter lab中显示gym的游戏动图
gym包在服务器使用无法可视化,会大大影响其使用的便捷性。可以在训练时禁止显示,测试时使用jupyter进行可视化,可以大大提高训练效率和结果的可视化。
训练时,会屏蔽代码env.render()
禁止显示游戏画面,
测试时,使用下面方法将使用matplotlib来进行游戏画面的可视化。
在服务器中安装Xvfb库:sudo apt install Xvfb
随后启动xvfb-run -s "-screen 0 1400x900x24" jupyter lab --no-browser
然后在jupyter中加入代码:
import matplotlib.pyplot as plt
%matplotlib inline
from IPython import display
可视化函数代码:
def show_state(env, step=0, info=""):
plt.figure(3)
plt.clf()
plt.imshow(env.render(mode='rgb_array'))
plt.title("Step: %d %s" % (step, info))
plt.axis('off')
display.clear_output(wait=True)
display.display(plt.gcf())
整体实例代码如下:
import matplotlib.pyplot as plt
import gym
%matplotlib inline
from IPython import display
def show_state(env, step=0, info=""):
plt.figure(3)
plt.clf()
plt.imshow(env.render(mode='rgb_array'))
plt.title("Step: %d %s" % (step, info))
plt.axis('off')
display.clear_output(wait=True)
display.display(plt.gcf())
env = gym.make("CartPole-v1")
observation = env.reset()
for _ in range(1000):
# env.render()
action = env.action_space.sample() # your agent here (this takes random actions)
observation, reward, done, info = env.step(action)
show_state(env, action, info)
if done:
observation = env.reset()
env.close()