Keras 多输入一个共享嵌入层

时间:2021-05-05 16:59:31

标签: keras embedding

是否可以简单地将一个嵌入层与具有多个特征的一个输入共享? 是否可以避免一个特征地创建多个输入层。

我想避免创建 34 个输入层(逐个特征)。

目标是通过抛出一个嵌入层34个特征序列,得到34个嵌入向量序列。将它们连接起来得到一个超特征向量序列。然后输入一个 LSTM。

输入形状 (None,100,34) -> Embedding_layer_size_64 -> (None,100, 34*64) -> LSTM -> softmax

希望清楚

1 个答案:

答案 0 :(得分:0)

解决方案:

# Shared embedding
embedding_layer = Embedding(input_dim = vocab_size+1, output_dim = emb_dim, input_length = nb_timesteps, mask_zero = True)

# For every features we have it's own input
feature_inputs = [Input(shape=(nb_timesteps, ), name='feature_' + str(i + 1)) for i in range(nb_features)]

# Repeat this for every feature
feature_embeddings = [embedding_layer(f) for f in feature_inputs]

# Concatenate the embedding outputs
concatenated_embeddings = concatenate(feature_embeddings, axis=-1)

lstm_1 = LSTM(output_dim)(concatenated_embeddings)

output_layer = Dense(nb_classes, activation='softmax')(lstm_1)

model = Model(inputs=feature_inputs, outputs=output_layer, name="Multi_feature_Embedding_LSTM")
相关问题