我在gym
的维护分支中构建了一个环境:Gymnasium
by Farama.在我的gym environment
中,我声明action_space = gym.spaces.Discrete(5)
和observation_space = gym.spaces.MultiBinary(25)
。使用Gym Basic Usage网站上建议的代理-环境循环运行环境不会出现任何问题:我注册了环境,它可以简单地由gym.make()
调用。
然而,我现在想在这个环境中训练一个强化学习代理。现在我遇到了Stable Baselines3
,它使DQN代理的实现变得相当容易。不过,它似乎确实支持新的Gymnasium
。即:
import gymnasium as gym
from stable_baselines3.ppo.policies import MlpPolicy
from stable_baselines3 import DQN
env = gym.make("myEnv")
model = DQN(MlpPolicy, env, verbose=1)
- 是的,我知道,“myEnv”是不可复制的,但环境本身太大(沿着文件系统的结构),但这不是这个问题的重点 *
此代码产生错误:
AssertionError: The algorithm only supports (<class 'gym.spaces.discrete.Discrete',) as action spaces but Discrete(5) was provided
我的问题如下:Stable Baselines 3是否支持Gymnasium
?
我尝试使用gym.spaces
来定义action_space
和observation_space
,这样
from gym.spaces import Discrete, MultiBinary
action_space = Discrete(5)
observation_space = MultiBinary(25)
但与此沿着,我必须重写环境的很大一部分,以支持旧的gym
包。我想知道是否有比这更好的解决办法。
2条答案
按热度按时间rjee0c151#
Stable Baselines3是否支持Gymnasium?
如果您查看
setup.py
,您将看到master分支和PyPI版本都与gym 0.21耦合。但是,有一个branch支持Gymnasium。我还没有测试过,我想几周后它会被合并到master中,然后我会自己迁移。到目前为止,这是最新的技术水平。
qlvxas9a2#
我对这里的其他答案有点困惑,因为我确信我在稳定基线3文档的某个地方看到过健身房。果然,它甚至在最基本的“入门”示例中:https://stable-baselines3.readthedocs.io/en/master/guide/quickstart.html。
然而,我只是尝试运行这段代码,收到了与OP相同的错误。在同一示例中,用gym 0.21替换gym 0.21没有问题。
编辑:使用gymnasium的“入门”示例适用于stable_baselines3版本2.0.0a1及更高版本。