python 稳定基线3支持Farama体育馆

snz8szmq  于 2023-05-05  发布在  Python
关注(0)|答案(2)|浏览(237)

我在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_spaceobservation_space,这样

from gym.spaces import Discrete, MultiBinary
action_space = Discrete(5)
observation_space = MultiBinary(25)

但与此沿着,我必须重写环境的很大一部分,以支持旧的gym包。我想知道是否有比这更好的解决办法。

rjee0c15

rjee0c151#

Stable Baselines3是否支持Gymnasium?
如果您查看setup.py,您将看到master分支和PyPI版本都与gym 0.21耦合。
但是,有一个branch支持Gymnasium。我还没有测试过,我想几周后它会被合并到master中,然后我会自己迁移。到目前为止,这是最新的技术水平。

qlvxas9a

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及更高版本。

相关问题