gpt4 book ai didi

subprocess - SubprocVecEnv 无法与自定义环境一起使用(稳定基线 - 健身房)

转载 作者:行者123 更新时间:2023-12-03 08:28:57 29 4
gpt4 key购买 nike

我使用gym.Env作为父类创建了一个自定义环境,并且一切都在单核上运行良好。我的代码如下:

class MyEnv(gym.Env):
....

但是,如果我尝试使用 SubprocVecEnv 使用所有 24 个 CPU 核心来加速学习过程,我会收到以下消息:ValueError:无法将输入数组从形状 (24,24) 广播到形状 (24,1)

我已经测试了 DummyVecEnv,它运行良好,但由于该函数不允许多重处理,我想像通常使用 Atari/Gym envs 一样使用 SubprocVecEnv。

PS:我的自定义环境非常简单,基本上我使用的是 567 行 4 列的数据集,代理每次访问一行并根据该观察结果预测两个值。观察空间和 Action 空间如下:

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 来训练代理。

我错过了什么重要的事情吗?

最佳答案

对我来说,它与输入“start_method”有关。

默认值为“forkserver”,但在我的机器上它只能与“fork”一起使用

envs= [make_env(env_name, seed) for seed in range(nproc)]

envs = SubprocVecEnv(envs, start_method='fork')

关于subprocess - SubprocVecEnv 无法与自定义环境一起使用(稳定基线 - 健身房),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65726221/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com