1

ValueError: xxx not found in gym registry, you maybe meant尝试在稳定的基线中注册自定义环境时得到 3。我尝试了以下命令:

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?

你看到哪个是错误的吗?

4

2 回答 2

2

Gym 不知道您的gym-basic环境——您需要通过导入gym_basic.

对于train.py您从 RL Baselines3 Zoo 运行的脚本,推荐的方法是将您的自定义环境导入utils/import_envs.py. 您应该将以下内容附加到该文件中。

try:
    import gym_basic
except ImportError:
    gym_basic = None

然后,您需要在目录下的相关文件中为您正在使用的代理(在本例中为 td3)设置环境的超参数hyperparameters。您可以查看hyperparameters/td3.yml文件中现有的环境超参数,以了解必须指定哪些超参数。然后,您可以basic-v0像这样为环境设置超参数。

basic-v0:
  # Hyperparameters go here...

但是,您应该注意,根据Stable Baselines 3 文档文档,td3 不支持离散动作空间,因此即使您指定了超参数,训练也可能会失败。

您可能想尝试不同的算法——步骤应该与上面描述的相同。运行时只要指定不同的算法train.py,一定要在hyperparameters目录下的相关文件中指定超参数。

于 2021-05-21T00:53:41.927 回答
1

这个问题可以通过--gym-packages gym_basic

python3 train.py --algo td3 --env basic-v0 --eval-freq 1000 --save-freq 5000 --gym-packages gym_basic

但随后它显示了其他问题hyperparameters。对于标准环境,它已在文件夹
中预定义 tunned 。对于在. 但是没有参数hyperparametershyperparameters--algo td3hyperparameters/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没有[0]_shape

所以这一切都需要更多的改变。

于 2021-05-21T00:48:43.643 回答