如何在Keras中将嵌入列与其他输入数据相结合

时间:2018-06-01 08:48:16

标签: python-3.x tensorflow keras embedding

我有一列包含1003个不同类别的分类数据,而且我有很多具有常规整数数据的列。我想在列中嵌入分类数据,并将嵌入的输出与所有其他列一起作为模型的输入。我不确定如何做到这一点,但已尝试使用合并下面的代码。不幸的是,这会产生值错误:'"" concat"模式只能合并具有匹配输出形状的图层(concat轴除外)。图层形状:[(无,1,11),(无,53)]'

非常感谢任何帮助。

    hidden_layers  = [1000,500,500]


    embedding = Sequential()
    embedding.add(1003, 11, input_length = 1))

    model1 = Sequential()
    model1.add(Dense(53, input_dim=53, activation='relu'))

    model = Sequential()
    model = model.add(Merge([embedding, model1], mode = 'concat'))

    for i, layer_size in enumerate(hidden_layers):
        model.add(Dense(layer_size, activation='relu'))

    model.add(Dense(self.output_layers, activation='linear'))
    model.compile(optimizer = 'adam', loss = 'mse')

1 个答案:

答案 0 :(得分:3)

Embedding图层会生成3D张量,如错误消息(无,1,11)中所示,其中1是要嵌入的序列长度。为了与2D张量合并,你必须将其展平:

embedding = Sequential()
embedding.add(Embedding(1003, 11, input_length = 1))
embedding.add(Flatten())

将给出(None,11)并且可以与(None,53)合并。