将多个阵列展平为一个观察规范

问题描述

我正在使用TensorFlow进行有关DQN的教程 https://www.tensorflow.org/agents/tutorials/2_environments_tutorial

我正在围绕可点击的世界构建环境。最初,我以(640,480,3)的形式提供了整个屏幕空间,并使用了一个线性为min = 0,max = 640x480的动作规范,实际上是整个可单击的Universe。事实证明,这是一个太大的空间,无法正确收敛于有效的解决方案。

此后,我使用了代理记忆体读取器缩小了空间,该读取器返回可点击操作的坐标。我现在大约有80个动作,而不是大约30万个动作。

我希望对观察规范应用类似的方法,以减少网络的维度。问题是我不确定如何在数组中表示我的读者。

为了更好地代表世界,我确定了以下包含信息的类:

  • n个项的数组,每个项都有一个ID。形状:(n,)
  • 由n个游戏角色组成的数组,每个角色都有X坐标,Y坐标,健康点值和唯一标识符。形状:(n,4,)
  • 具有X坐标,Y坐标和健康点值的玩家对象。形状:(3,)

不幸的是,每一个的尺寸都不同,我不确定如何构造这些的ArraySpec。目前,我使用零填充以匹配最大数组的最长维度,然后使用numpy.concatenate。结果正在处理中,但我觉得必须有一种比将无用的信息包含在观察中更好的方法

在发布此内容之前,我已经进行了一些广泛的搜索,但是如果有人建议阅读,我会很乐意提供帮助。如果用零填充是最好的方法,请也建议这样做。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)