是否可以简单地将一个嵌入层与具有多个特征的一个输入共享? 是否可以避免一个特征地创建多个输入层。
我想避免创建 34 个输入层(逐个特征)。
目标是通过抛出一个嵌入层34个特征序列,得到34个嵌入向量序列。将它们连接起来得到一个超特征向量序列。然后输入一个 LSTM。
输入形状 (None,100,34) -> Embedding_layer_size_64 -> (None,100, 34*64) -> LSTM -> softmax
希望清楚
答案 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")