说点人话的强化学习:如何显示当前训练的环境,openai gym不显示画面,env.render()不显示画面,CartPole不显示画面

在新版gym中,使用`env.render()`直接显示画面的方法不再有效。可以设置`render_mode=human`来显示运行画面,但会影响训练速度。另一种方法是设置`render_mode=rgb_array`,将画面存储为rgb_array,然后通过cv2进行渲染,这样可以在需要时显示特定训练阶段的画面,提高训练效率。
摘要由CSDN通过智能技术生成

在早期版本gym中,调用env.render()会直接显示当前画面,但是现在的新版本中这一方法无效。现在有一下几种方法显示当前环境和训练中的画面:

1. render_model = "human"

env = gym.make("CartPole-v1", render_mode = "human")

显示效果:

 

问题:

该设置下,程序会输出所有运行画面。但是这一步会带来一个问题,因为画面渲染需要时间,导致训练变的非常慢。强化学习的前期是一个一直试错的部分,显然我们并不是每次都想花费时间去观察模型试错,并且多数时候我们想要观察我们想观察的训练阶段。对此我们可以使用下一个方法;

2. render_model = "rgb_array"

env = gym.make("CartPole-v1", render_mode = "rgb_array")

该方法会让env.render()返回一个 rgb_array, 这一rgb_array 表示当前step下的环境画面,当我们需要显示的时候可以使用cv2来进行渲染。方法如下:

# RGB 转化为BGR, cv2显示格式为BGR
img = cv2.cvtColor(env.render(), cv2.COLOR_RGB2BGR)

# 显示画面,test为窗口名称
cv2.imshow("test",img)

# 给cv2一定时间完成渲染,否则无法显示
cv2.waitKey(1)

显示效果如下:

 

  • 16
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值