如何更改A3C Tensorflow示例以玩Atari游戏?

时间:2019-02-24 06:43:04

标签: python tensorflow deep-learning reinforcement-learning openai-gym

我跟随Tensorflow tutorial实施A3C,以便在非常规环境中表现出色,并希望将其用作一些Atari游戏的游戏机器人的起点。但是,如果仅将环境更改为Frostbite-v0,则在工作线程启动时会出现此错误:

Exception in thread Thread-4:
Traceback (most recent call last):
  File "threading.py", line 917, in _bootstrap_inner
    self.run()
  File "a3c.py", line 286, in run
    action = np.random.choice(self.action_size, p=probs.numpy()[0])
  File "mtrand.pyx", line 1135, in mtrand.RandomState.choice
ValueError: object too deep for desired array

我是深度学习中的一个完全菜鸟,但我想问题在于网络如何仅具有Dense层来获取输入,在这种情况下,以this为参考具有不同形状的环境,这意味着不是Box(4,),而是Box(210, 160, 3)

如何更改示例,使其在这种观察下正常工作?我是否需要添加/更改图层?总体来说,它可以在Frostbite-v0环境中正常运行吗?

编辑:困扰我的另一件事是,至少从外部角度来说,state_size中的ActorCriticModel参数已设置但从未使用过。该模型是以任何方式使用它还是只是作为未使用的参数坐在那里?

1 个答案:

答案 0 :(得分:1)

恐怕您将需要进行很多更改:首先,要处理图像输入,您需要添加卷积层。其次,传统上将atari游戏的图像从210x160x3降采样为64x64(微小的灰度图像)或类似的图像。因此,如果您是初学者,我认为最好参考其他一些教程。例如famous blog post from a famous guy Karpathy