如何将嵌入式列与 Keras 中的其他输入数据组合

How to combine embedded columns with other input data in Keras

我有一个包含 1003 个不同类别的分类数据的列,我有很多包含常规整数数据的列。我想用分类数据嵌入该列,并将嵌入的输出与所有其他列一起作为我模型的输入。我不确定如何执行此操作,但已尝试使用合并在以下代码中进行。不幸的是,这给出了一个 Value 错误:'"concat" 模式只能合并具有匹配输出形状的层,除了 concat 轴。图层形状:[(None, 1, 11), (None, 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')

Embedding 层生成 3D 张量,如您在错误消息 (None, 1, 11) 中所见,其中 1 是 序列长度 你正在嵌入。为了与 2D 张量合并,您必须将其展平:

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

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