在Keras中,如何成对连接两个不同输入大小的输入?

在Keras中,如何成对连接两个不同输入大小的输入?,keras,deep-learning,Keras,Deep Learning,作为一个激励性的例子,假设我们在一个由异质节点(例如图像和文本)组成的网络中存在一个边缘权重预测问题,并且希望将每一对可能的输入串联起来。以下是一个简单的数据示例: # two inputs of different shape x = np.array([[1, 1], [2, 2], [3, 3]]) y = np.array([[4, 4, 4], [5, 5, 5]]) # a predicted fe

作为一个激励性的例子,假设我们在一个由异质节点(例如图像和文本)组成的网络中存在一个边缘权重预测问题,并且希望将每一对可能的输入串联起来。以下是一个简单的数据示例:

# two inputs of different shape
x = np.array([[1, 1],
              [2, 2],
              [3, 3]])
y = np.array([[4, 4, 4],
              [5, 5, 5]])

# a predicted feature we'd like to model
z= np.array([0, 1, 1, 0, 0, 0])

joined = np.array([[1, 1, 4, 4, 4], 
                   [1, 1, 5, 5, 5], 
                   [2, 2, 4, 4, 4], 
                   [2, 2, 5, 5, 5], 
                   [3, 3, 4, 4, 4], 
                   [3, 3, 5, 5, 5]])
some_model.fit(inputs=[x,y], outputs=z)
以及一个示例模型(以密集层显示,但在精神上,这可能是任何层或层序列):

连接是根据另一个答案和输入进行的,但我不确定是否以及如何创建这种模型

在Keras中,有没有一种简单的方法可以实现这一点?

使用
tf.tile()
tf.reforme()
tf.concat()

将tensorflow导入为tf
将numpy作为np导入
x_data=np.array([[1,1],
[2, 2],
[3,3]],dtype=np.float32)
y_data=np.array([[4,4,4],
[5,5,5]],dtype=np.float32)
x=tf.placeholder(tf.float32,shape=(无,2))
y=tf.placeholder(tf.float32,shape=(无,3))
xshape=tf.shape(x)
y形状=tf形状(y)
newshape=(xshape[0]*yshape[0],xshape[1]+yshape[1])
xres=tf.tile(x,倍数=[1,yshape[0]])
xres=tf.reforme(xres[newshape[0],xshape[1]]
#`x`现在是:[[1.1]
#              [1. 1.]
#              [2. 2.]
#              [2. 2.]
#              [3. 3.]
#              [3. 3.]]
yres=tf.tile(y,倍数=[xshape[0],1])
#'y'现在是:[[4.4.4]
#              [5. 5. 5.]
#              [4. 4. 4.]
#              [5. 5. 5.]
#              [4. 4. 4.]
#              [5. 5. 5.]]

res=tf.concat([xres,yres],axis=1)#
z是做什么的?哎呀,省去了:)一个我们想作为输出建模的预测功能,编辑以反映。谢谢!你的回答让我意识到我的问题并不是为了解决我真正的问题而写的,这有助于我把注意力集中在我真正想做的事情上。干杯好的,我来看看。