我跟随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
参数已设置但从未使用过。该模型是以任何方式使用它还是只是作为未使用的参数坐在那里?
答案 0 :(得分:1)
恐怕您将需要进行很多更改:首先,要处理图像输入,您需要添加卷积层。其次,传统上将atari游戏的图像从210x160x3降采样为64x64(微小的灰度图像)或类似的图像。因此,如果您是初学者,我认为最好参考其他一些教程。例如famous blog post from a famous guy Karpathy