OpenAI Gym 注册中缺少什么?
What is missing in OpenAI Gym registration?
尝试在稳定基线 3 中注册自定义环境时,我得到 ValueError: xxx not found in gym registry, you maybe meant
。我尝试了以下命令:
apt-get install swig cmake ffmpeg freeglut3-dev xvfb
git clone --recursive https://github.com/DLR-RM/rl-baselines3-zoo
cd rl-baselines3-zoo
pip3 install -r requirements.txt
cd ..
git clone https://github.com/MatePocs/gym-basic.git
cd gym-basic
pip3 install -e .
cd ..
cd rl-baselines3-zoo
python3 train.py --algo td3 --env basic-v0 --eval-freq 1000 --save-freq 5000
结果是:
Traceback (most recent call last):
File "train.py", line 107, in <module>
raise ValueError(f"{env_id} not found in gym registry, you maybe meant {closest_match}?")
ValueError: basic-v0 not found in gym registry, you maybe meant CubeCrash-v0?
你看出哪个是错误的了吗?
这个问题可以通过 --gym-packages gym_basic
解决
python3 train.py --algo td3 --env basic-v0 --eval-freq 1000 --save-freq 5000 --gym-packages gym_basic
但随后显示 hyperparameters
的其他问题。
对于标准环境,它已在文件夹 hyperparameters
中预定义了 tunned hyperparameters
。
对于 --algo td3
在 hyperparameters/td3.yml
.
但是basic-v0
没有参数
如果我复制其他参数并使用名称basic-v0
basic-v0:
n_timesteps: 300000
policy: 'MlpPolicy'
noise_type: 'ornstein-uhlenbeck'
noise_std: 0.5
然后(理论上)它解决了这个问题
...但它给出了下一个问题。
train
想得到env.action_space.shape[0]
而basic-v0
在shape
中没有[0]
所以所有这些都需要更多的改变。
Gym 不知道你的 gym-basic
环境——你需要通过导入 gym_basic
.
来告诉 gym
对于 train.py
脚本,您 运行 来自 RL Baselines3 Zoo,看起来推荐的方法是在 utils/import_envs.py
中导入您的自定义环境。您应该将类似以下内容附加到该文件。
try:
import gym_basic
except ImportError:
gym_basic = None
然后您需要在 hyperparameters
目录下的相关文件中为您正在使用的代理(在本例中为 td3)设置环境超参数。您可以查看 hyperparameters/td3.yml
文件中的现有环境超参数,了解必须指定哪些超参数。然后,您可以像这样为 basic-v0
环境设置超参数。
basic-v0:
# Hyperparameters go here...
但是,您应该注意,根据Stable Baselines 3 documentation文档,td3 不支持离散动作空间,因此即使您指定了超参数。
您可能想尝试不同的算法——步骤应该与上述相同。 运行 train.py
时指定不同的算法即可,一定要在hyperparameters
目录下的相关文件中指定超参数。
尝试在稳定基线 3 中注册自定义环境时,我得到 ValueError: xxx not found in gym registry, you maybe meant
。我尝试了以下命令:
apt-get install swig cmake ffmpeg freeglut3-dev xvfb
git clone --recursive https://github.com/DLR-RM/rl-baselines3-zoo
cd rl-baselines3-zoo
pip3 install -r requirements.txt
cd ..
git clone https://github.com/MatePocs/gym-basic.git
cd gym-basic
pip3 install -e .
cd ..
cd rl-baselines3-zoo
python3 train.py --algo td3 --env basic-v0 --eval-freq 1000 --save-freq 5000
结果是:
Traceback (most recent call last):
File "train.py", line 107, in <module>
raise ValueError(f"{env_id} not found in gym registry, you maybe meant {closest_match}?")
ValueError: basic-v0 not found in gym registry, you maybe meant CubeCrash-v0?
你看出哪个是错误的了吗?
这个问题可以通过 --gym-packages gym_basic
python3 train.py --algo td3 --env basic-v0 --eval-freq 1000 --save-freq 5000 --gym-packages gym_basic
但随后显示 hyperparameters
的其他问题。
对于标准环境,它已在文件夹 hyperparameters
中预定义了 tunned hyperparameters
。
对于 --algo td3
在 hyperparameters/td3.yml
.
但是basic-v0
如果我复制其他参数并使用名称basic-v0
basic-v0:
n_timesteps: 300000
policy: 'MlpPolicy'
noise_type: 'ornstein-uhlenbeck'
noise_std: 0.5
然后(理论上)它解决了这个问题
...但它给出了下一个问题。
train
想得到env.action_space.shape[0]
而basic-v0
在shape
[0]
所以所有这些都需要更多的改变。
Gym 不知道你的 gym-basic
环境——你需要通过导入 gym_basic
.
对于 train.py
脚本,您 运行 来自 RL Baselines3 Zoo,看起来推荐的方法是在 utils/import_envs.py
中导入您的自定义环境。您应该将类似以下内容附加到该文件。
try:
import gym_basic
except ImportError:
gym_basic = None
然后您需要在 hyperparameters
目录下的相关文件中为您正在使用的代理(在本例中为 td3)设置环境超参数。您可以查看 hyperparameters/td3.yml
文件中的现有环境超参数,了解必须指定哪些超参数。然后,您可以像这样为 basic-v0
环境设置超参数。
basic-v0:
# Hyperparameters go here...
但是,您应该注意,根据Stable Baselines 3 documentation文档,td3 不支持离散动作空间,因此即使您指定了超参数。
您可能想尝试不同的算法——步骤应该与上述相同。 运行 train.py
时指定不同的算法即可,一定要在hyperparameters
目录下的相关文件中指定超参数。