我使用gym.Env作为父类创建了一个自定义环境,并且一切都可以很好地运行单核。我已经开始代码如下:
class MyEnv(gym.Env):
....
但是,如果我尝试使用 SubprocVecEnv 使用所有 24 个 CPU 核心来加速学习过程,我会收到以下消息:ValueError:无法将输入数组从形状 (24,24) 广播到形状 (24,1)
我已经测试了 DummyVecEnv 并且它运行良好,但由于此函数不允许多重处理,所以我想使用 SubprocVecEnv,就像我通常使用 Atari/Gym envs 一样。
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 来训练代理。
我错过了什么重要的事情吗?