我有两个输入,x_a和x_b,其中x_a是分类变量(因此是嵌入),x_b是通常的特征矩阵。基本上我想将x_b乘以权重矩阵W_b,这是一个from keras.models import Sequential
from keras.layers import Dense, Activation, Embedding, Merge
encoder_cc = Sequential()
# Input layer for countries(x_a)
encoder_cc.add(Embedding(cc_idx.max(),64))
# Input layer for triggers(x_b)
encoder_trigger = Sequential()
# This should effectively be <W_b>
encoder_trigger.add(Dense(64, input_dim=10, init='uniform'))
model = Sequential()
model.add(Merge([encoder_cc, encoder_trigger], mode='concat'))
矩阵,这样我最终得到64维输出。
Exception: "concat" mode can only merge layers with matching output shapes except for the concat axis. Layer shapes: [(None, 1, 64), (None, 64)]
然后我想在我做通常的神经网络之前合并(合并)这两个。除了我收到错误:
{{1}}
有关如何解决这个问题的任何想法?
答案 0 :(得分:3)
嵌入层用于序列,然后输出具有形状3D(None,sequence_length,embedding_size)的张量,在您的情况下(None,1,64),因为您的输入长度为1。
纠正这种情况的方法是添加&#34; Flatten()&#34;像Stephan建议的那样将图层分层到您的encoder_cc模型,或添加一个&#34;重塑((64,))&#34;在嵌入层之后。 这将强制输出形状为(None,64)并与其他模型的形状相匹配。
我希望这会有所帮助。