【gym】env.render三种mode
研究了gym环境中的env.render函数的三种mode的使用效果
·
最近使用gym提供的小游戏做强化学习DQN算法的研究,首先就是要获取游戏截图,并且对截图做一些预处理。
screen = env.render(mode='rgb_array')
上述代码是将游戏截图转换为一个rgb的数组(numpy.ndarray),由变量screen保存。其中mode一共有三种模式:human, rgb_array和ansi。在gym.core中找到官方说明,如下所示:
def render(self, mode="human"):
"""Renders the environment.
The set of supported modes varies per environment. (And some
environments do not support rendering at all.) By convention,
if mode is:
- human: render to the current display or terminal and
return nothing. Usually for human consumption.
- rgb_array: Return an numpy.ndarray with shape (x, y, 3),
representing RGB values for an x-by-y pixel image, suitable
for turning into a video.
- ansi: Return a string (str) or StringIO.StringIO containing a
terminal-style text representation. The text can include newlines
and ANSI escape sequences (e.g. for colors).
Note:
Make sure that your class's metadata 'render.modes' key includes
the list of supported modes. It's recommended to call super()
in implementations to use the functionality of this method.
Args:
mode (str): the mode to render with
Example:
class MyEnv(Env):
metadata = {'render.modes': ['human', 'rgb_array']}
def render(self, mode='human'):
if mode == 'rgb_array':
return np.array(...) # return RGB frame suitable for video
elif mode == 'human':
... # pop up a window and render
else:
super(MyEnv, self).render(mode=mode) # just raise an exception
"""
raise NotImplementedError
一般用的比较多的就是rgb_array,可以对图像进行修改。human会返回一个bool变量,主要是用来在屏幕上显示当前的游戏图像。ansi目前还不太了解相关具体的应用。
更多推荐
已为社区贡献3条内容
所有评论(0)