关于openai基线A2C实现的问题



在A2C算法中,为了并行计算,在不同的进程中运行多个环境。在openai基线实现中,SubprocVecEnv是为不同环境创建不同进程的类。(你可以在stable_baseline中看到几乎相同的实现)。

我不明白的一点是:为什么进程的参数是一个返回称为env_fn的环境的函数,而不是直接返回称为env的环境本身?

换句话说,为什么L61是这样的,而不是这样的:

self.ps = [ctx.Process(target=worker, args=(work_remote, remote, CloudpickleWrapper(env)))

谢谢!

因为要创建多个环境,您需要函数来创建它们。如果你将环境本身传递给它,它是通过引用传递到环境的一个实例,所有的worker将在同一个实例上操作。

另一方面,该函数允许创建多个实例,以便每个进程可以在一个实例上操作。

相关内容

  • 没有找到相关文章

最新更新