我正在使用TFLearn和python3.7创建我的第一个神经网络,目标是玩snake。 该游戏由一个10x10的棋盘组成,空白区域显示为0,蛇试图吃掉的目标显示为-1,蛇头显示为1,蛇的每个连续部分显示为蛇的前一部分+1。例如,游戏状态可以是:
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
-1 0 0 0 0 0 0 0 5 0
0 0 0 0 0 0 2 3 4 0
0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
状态存储为单个数组,大小为100
我已经创建了游戏和训练数据,这是一个列表,其中包含一个状态和所采取的操作(0-3包括在内,代表4个方向)。输入数据的一个元素可以是:
[[0, 0, ... 0], 2]
在上面的输入数据元素中,状态是[0,0。。。0]而采取的操作是2(下移)
我很难确定此数据的形状,因为操作是一个int而不是大小为100的列表。我假设数据的形状为:
[None, numberOfInputElements, 2, 100],
尽管这看起来很奇怪,因为所采取的操作是一个整数,而不是数据形状中定义的大小为100的列表
这是否正确,如果不正确,正确的形状是什么(如果可能,请解释原因)
谢谢你的帮助
最好有一个张量用
[None, 100]
(或者更好,用[None, 10, 10]
表示输入图像,这样您可以尝试卷积方法)和另一个张量用[None]
表示动作,或者[None,4]
,其中,动作以一种热的方式表示(这对于定义成本函数(如交叉熵)很有用)一个不相关的想法-假设游戏竞技场是循环的,总是围绕蛇头的矩阵中心(所以蛇头总是在同一个位置)
相关问题 更多 >
编程相关推荐