我有一个包含 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) 合并。
关于python-3.x - 如何将嵌入式列与 Keras 中的其他输入数据组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50639501/