gpt4 book ai didi

openai-gym - 如何在渲染的 openAI 健身房环境中显示剧集

转载 作者:行者123 更新时间:2023-12-05 05:05:02 34 4
gpt4 key购买 nike

如果我们查看环境的预览,它们​​会在右下角的动画中显示剧集的增加。 https://gym.openai.com/envs/CartPole-v1/ .是否有明确显示的命令?

最佳答案

我认为 OpenAI 中没有直接可用的命令来执行此操作,但我已经编写了一些代码,您可能可以根据自己的目的进行调整。这是最终结果:

enter image description here

这就是我实现最终结果的方式:

  1. 对于每一步,您都使用 env.render(mode='rgb_array') 获取帧
  2. 将帧(它是一个 numpy 数组)转换为 PIL 图像
  3. 您使用 PIL.ImageDraw 中的实用程序将剧集名称写在 PIL 图像的顶部(请参阅代码片段中的函数 _label_with_episode_number)。
  4. 您将标记的图像保存到帧列表中。
  5. 您使用 matplotlib 实用程序将帧列表呈现为 GIF。

这是我编写的代码,用于获取随机代理行为的 GIF,每帧的左上角显示剧集编号:

import os
import imageio
import numpy as np
from PIL import Image
import PIL.ImageDraw as ImageDraw
import matplotlib.pyplot as plt


def _label_with_episode_number(frame, episode_num):
im = Image.fromarray(frame)

drawer = ImageDraw.Draw(im)

if np.mean(im) < 128:
text_color = (255,255,255)
else:
text_color = (0,0,0)
drawer.text((im.size[0]/20,im.size[1]/18), f'Episode: {episode_num+1}', fill=text_color)

return im


def save_random_agent_gif(env):
frames = []
for i in range(5):
state = env.reset()
for t in range(500):
action = env.action_space.sample()

frame = env.render(mode='rgb_array')
frames.append(_label_with_episode_number(frame, episode_num=i))

state, _, done, _ = env.step(action)
if done:
break

env.close()

imageio.mimwrite(os.path.join('./videos/', 'random_agent.gif'), frames, fps=60)


env = gym.make('CartPole-v1')
save_random_agent_gif(env)

您可以在此处找到代码的工作版本:https://github.com/RishabhMalviya/dqn_experiments/blob/master/train_and_visualize.py#L10

关于openai-gym - 如何在渲染的 openAI 健身房环境中显示剧集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60765613/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com