Numpy 构建以结构化数组作为输入的Keras模型

Numpy 构建以结构化数组作为输入的Keras模型,numpy,machine-learning,keras,deep-learning,reinforcement-learning,Numpy,Machine Learning,Keras,Deep Learning,Reinforcement Learning,我正在做强化学习,教代理在二维世界中完成任务。其中很大一部分是要弄清楚如何将他们的环境表示为神经元 到目前为止,我已经表示世界有一个三维网格的形状(10,10,7)。前两个10是因为网格在每个方向上的大小是10,而第7个是因为我对每个空间有7种不同的说法(无论它有食物、敌人、墙……) 然后我在Keras中使用卷积层来处理这些信息并从中学习。它起作用了,这些生物也活了下来 现在我还想补充更多的信息,让神经网络知道如何使用。例如,我想对代理采取的最后一个操作进行编码。我还可以对距离最近的食物的距离或

我正在做强化学习,教代理在二维世界中完成任务。其中很大一部分是要弄清楚如何将他们的环境表示为神经元

到目前为止,我已经表示世界有一个三维网格的形状(10,10,7)。前两个10是因为网格在每个方向上的大小是10,而第7个是因为我对每个空间有7种不同的说法(无论它有食物、敌人、墙……)

然后我在Keras中使用卷积层来处理这些信息并从中学习。它起作用了,这些生物也活了下来

现在我还想补充更多的信息,让神经网络知道如何使用。例如,我想对代理采取的最后一个操作进行编码。我还可以对距离最近的食物的距离或角度进行编码。显然,这不是三维数据,这是一系列一维数据

我希望Keras能够将其与3D输入一起用作输入,并从中学习。我在NumPy中将组合数据表示为结构化数组:

observation = np.zeros((1,), dtype=[('grid', np.float64, (10, 10, 7,)), ('sequential', np.float64, (7,))])
这样就可以访问网格数据作为
observation['grid']
,访问顺序数据作为
observation['sequential']

不幸的是,我不知道如何让Keras使用这种结构化数组。我的理由是,我应该使用函数式API构建一个模型,该模型将有两个“尖头”用于输入,它们将在某个点连接到一个
串联
,并合并到最终的输出层

但是,我不知道如何让Keras知道NumPy结构化阵列应该分解为它所组成的子阵列可能吗?


如果我在这方面走错了方向,请给出建议。

在keras中,您可以提供以下不同的输入

从keras.models导入输入,模型
从keras.layers导入二维、密集、展平、连接
第一个输入=输入(形状=(10,10,7))
第二个输入=输入(形状=(7))
c1=Conv2D(32,(3,3),padding='same')(第一个输入)
c1=展平()(c1)
d1=密集(10)(第二次输入)
m=串联([c1,d1])
m=密度(5)(m)
模型=模型(输入=[第一个输入,第二个输入],输出=m)
compile(优化器='adam'loss='classifical\u crossentropy')
模型拟合([observation['grid'],observation['sequential']],Y_train)
这是一个粗略的设计,但它需要您的输入和连接,然后生成结果