我想在CartPole-v0不打开渲染窗口的情况下访问 OpenAI 健身房环境中的原始像素。我该怎么做呢?
示例代码:
import gym
env = gym.make("CartPole-v0")
env.reset()
img = env.render(mode='rgb_array', close=True) # Returns None
print(img)
img = env.render(mode='rgb_array', close=False)
# Opens annoying window, but gives me the array that I want
print(img.shape)
Run Code Online (Sandbox Code Playgroud)
附注。我很难为 OpenAI 健身房找到好的文档。它只是我,还是根本不存在?
编辑:我不需要打开渲染视频。
我正试图在Jupyter笔记本中显示AI-Gym演示.我获得了Atari演示的良好结果Breakout-v0以及购物车极点演示的难度错误消息CartPole-v0.两者在笔记本电脑外都很好用.以下是最小的细节:
在控制台:
$ pip install gym[atari] &> /dev/null
$ /anaconda3/bin/python3
Python 3.6.3 |Anaconda, Inc.| (default, Oct 6 2017, 12:04:38)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import gym
>>> env = gym.make('Breakout-v0')
>>> env.reset()
>>> env.render()
Run Code Online (Sandbox Code Playgroud)
结果:
现在,同样使用cart-pole,在一个新的Python会话中:
$ pip install gym &> /dev/null
$ /anaconda3/bin/python3
Python 3.6.3 |Anaconda, Inc.| (default, Oct 6 2017, 12:04:38)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type …Run Code Online (Sandbox Code Playgroud) 如何在openai健身房列出所有当前注册的环境ID(因为它们用于创建环境)?
有点背景:安装了许多插件,这些插件都有习惯的ID,如atari,super mario,doom等.
不要与atari-py的游戏名称混淆.
[注意我正在使用xvfb-run -s "-screen 0 1400x900x24" jupyter notebook]
我尝试在OpenAI Gym中运行一组基本命令
import gym
env = gym.make("CartPole-v0")
obs = env.reset()
env.render()
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
...
~/Downloads/yes/lib/python3.7/site-packages/pyglet/gl/__init__.py in <module>()
225 else:
226 from .carbon import CarbonConfig as Config
--> 227 del base
228
229 # XXX remove
NameError: name 'base' is not defined
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能解决此问题?
在 Linux PC 上,我试图创建一个自定义的开放式 AI Gym 环境。我可以完成从 medium.com 写的博客中的所有步骤,包括pip install -e .但我在制作环境的最终产品时遇到错误env = gym.make('BASoperator-v1.0')
中型博客声明需要这个文件目录,我的命名约定是这样的:
vavBox/
README.md
setup.py
vavBox/
__init__.py
envs/
__init__.py
vavBox.py
Run Code Online (Sandbox Code Playgroud)
这是我的 setup.py:
from setuptools import setup
setup(name='vavBox',
version='0.0.1',
install_requires=['gym']
)
Run Code Online (Sandbox Code Playgroud)
首先init.py:
from gym.envs.registration import register
register(
id='vavBox',
entry_point='vavBox.envs:vavBox',
)
Run Code Online (Sandbox Code Playgroud)
env文件夹中的第二个 init.py :
from vavBox.envs.vavBox import vavBox
Run Code Online (Sandbox Code Playgroud)
的pip install都很好。我可以看到 pip 安装了 3rd 方包。但是,当我尝试通过以下脚本导入环境时:
import numpy as np
import pandas as pd
import time
import gym
import vavBox
env …Run Code Online (Sandbox Code Playgroud) Rllib 文档提供了一些有关如何创建和训练自定义环境的信息。有一些关于注册该环境的信息,但我想它的工作方式需要与健身房注册不同。
我正在使用SimpleCorridor环境对此进行测试。如果我将注册码添加到文件中,如下所示:
from ray.tune.registry import register_env
class SimpleCorridor(gym.Env):
...
def env_creator(env_config):
return SimpleCorridor(env_config)
register_env("corridor", env_creator)
Run Code Online (Sandbox Code Playgroud)
然后我可以使用字符串名称训练算法没问题:
if __name__ == "__main__":
ray.init()
tune.run(
"PPO",
stop={
"timesteps_total": 10000,
},
config={
"env": "corridor", # <--- This works fine!
"env_config": {
"corridor_length": 5,
},
},
)
Run Code Online (Sandbox Code Playgroud)
然而
在定义环境的同一个文件中注册环境是没有意义的,因为您可以只使用该类。OpenAI 健身房注册很好,因为如果您安装环境,那么您只需编写即可在任何地方使用它
include gym_corridor
Run Code Online (Sandbox Code Playgroud)
我不清楚是否有办法为 rllib 注册环境做同样的事情。有没有办法做到这一点?
我正在尝试在新的macOs Big Sur上运行这个简单的健身房示例。
import gym
env = gym.make('CartPole-v0')
env.reset()
for _ in range(1000):
env.render()
env.step(env.action_space.sample()) # take a random action
env.close()
Run Code Online (Sandbox Code Playgroud)
但是,我遇到了这个
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/gym/envs/classic_control/rendering.py", line 25, in <module>
from pyglet.gl import *
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pyglet/gl/__init__.py", line 95, in <module>
from pyglet.gl.lib import GLException
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pyglet/gl/lib.py", line 147, in <module>
from pyglet.gl.lib_agl import link_GL, link_GLU, link_AGL
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pyglet/gl/lib_agl.py", line 43, in <module>
gl_lib = pyglet.lib.load_library(framework='/System/Library/Frameworks/OpenGL.framework')
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pyglet/lib.py", line 124, in load_library
return self.load_framework(kwargs['framework'])
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pyglet/lib.py", …Run Code Online (Sandbox Code Playgroud) 如果我们查看环境的预览,它们会在右下角的动画中显示不断增加的剧集。https://gym.openai.com/envs/CartPole-v1/。是否有命令明确显示这一点?
您能否建议一些稳定基线的替代方案,我可以用它来训练强化学习中的代理。
另外,我正在使用健身房迷你网格环境,所以请告诉我那些在这种环境中工作的人。
我刚刚创建了一个安装了健身房的新环境。我刚刚开始使用 Atari 游戏,但我的以下代码出现导入错误 -
import gym
env = gym.make('FrozenLake-v1')
videosDir = './RL_videos'
env = gym.wrappers.Monitor(env, videosDir )
Run Code Online (Sandbox Code Playgroud)
错误回溯 -
Traceback (most recent call last):
File "/Users/home/Ash/RL/code/rl03-Videos.py", line 2, in <module>
from gym.wrappers import Monitor
ImportError: cannot import name 'Monitor' from 'gym.wrappers' (/Users/home/lib/python3.9/site-packages/gym/wrappers/__init__.py)
(pytorch) ash@Ash-Air code % python rl03-Videos.py
Traceback (most recent call last):
File "/Users/home/Ash/RL/code/rl03-Videos.py", line 15, in <module>
env = gym.wrappers.Monitor(env, videosDir )
AttributeError: module 'gym.wrappers' has no attribute 'Monitor'
Run Code Online (Sandbox Code Playgroud)
版本 -
Python 3.9
健身房0.23.1
我通过brew 和pip 安装了ffmpeg
openai-gym ×10
python ×6
jupyter ×1
matplotlib ×1
openai-api ×1
pip ×1
pyglet ×1
python-3.x ×1
ray ×1
tensorflow ×1