作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用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/
我使用gym.Env作为父类创建了一个自定义环境,并且一切都在单核上运行良好。我的代码如下: class MyEnv(gym.Env): .... 但是,如果我尝试使用 SubprocVecEnv 使
我是一名优秀的程序员,十分优秀!