我已经使用gym.Env 作为父类制作了一个自定义环境,并且在单核运行时一切正常。我已经开始如下代码:
class MyEnv(gym.Env):
....
但是,如果我尝试使用 SubprocVecEnv 来使用我所有的 24 个 CPU 内核来加速学习过程,我会收到消息: ValueError: could not broadcast input array from shape (24,24) into shape (24,1)
我已经测试了 DummyVecEnv,它运行良好,但由于此功能不允许多处理,我想像通常使用 Atari/Gym 环境一样使用 SubprocVecEnv。
PS:我的自定义环境非常简单,基本上我使用的是一个有 567 行和 4 列的数据集,代理一次访问一行并从这个观察中预测两个值。观察空间和动作空间如下:
self.observation_space = spaces.Box(low=1, high=1, shape=(1,4), dtype=np.float64)
self.action_space = spaces.Box(low=np.array([0., -1.]), high=np.array([2., 1.]), dtype=np.float64)
我像往常一样使用稳定基线的 PPO2 训练代理。
我错过了什么重要的东西吗?