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()

参考:https://www.jianshu.com/p/3e96dc04d005

posted @ 2021-06-09 14:51  ho_ho  阅读(1057)  评论(0编辑  收藏  举报