AI4Finance-Foundation / ElegantRL

Massively Parallel Deep Reinforcement Learning. 🔥
https://ai4finance.org
Other
3.77k stars 852 forks source link

可以上传一个Atari环境的demo吗 #134

Open Timerunning opened 2 years ago

Timerunning commented 2 years ago

想利用elegantRL的多进程特性训练在Atari环境上的模型,但是可能是版本更新太快的原因,在examples里找不到可以直接运行的Demo

Yonv1943 commented 2 years ago

可以。

我们打算用DQN或者D3QN算法接一个 Atari Game 的打砖块环境。

这里也顺便说一下「利用elegantRL的多进程特性训练在Atari环境上的模型」要如何做:

先提供一个能跑Atari Game 的测试代码:

env = gym.make('某个Atari Game的名字')

state  = env.reset()
done = True
while done:
    state, reward, done, _ = env.step(action)

因为多进程需要获取 env的创建方法,所以我们需要把创建env 的过程拆开,作为参数记录在主进程里。 主进程重建多个子进程后,在worker子进程里,它会自行创建 用于训练的仿真环境:

env_func = gym.make
env_args = {一个记录超参数的字典}

env = env_func{**env_args)

此外,基于当前DQN或D3QN代码 接一个 Atari Game 的游戏,需要注意,它的state 可能是游戏画面截图,目前的 demo 都是基于 1D state 写的,需要改成 2D state。 好在 ReplayBuffer把 state 和其他数据分开储存了,所以可以直接储存 不同 shape 的 state,直接完成代码适配。

Timerunning commented 2 years ago

感谢您的回复。由于刚接触到ElegantRL框架,我可能还需要一段时间结合其他环境的Demo来理解您的回复。

Timerunning commented 2 years ago

另外其他的框架会提供一个专门的方法对Atari环境输出的帧画面进行处理,例如原始的游戏画面为RGB三通道图片,具体尺寸为(210, 160, 3)。对原始图像进行灰度图,空间尺寸缩放,最大最小值归一化,堆叠相邻N个游戏帧(N=4)。最后得到一个尺寸为(4, 84, 84),即为相邻的4帧灰度图。本项目有考虑过提供类似的包装方法吗。