【问题标题】:Keras multi input one shared embedding layerKeras 多输入一个共享嵌入层
【发布时间】:2021-07-28 00:49:56
【问题描述】:

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

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

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

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

希望清楚

【问题讨论】:

    标签: keras embedding


    【解决方案1】:

    解决方案:

    # 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")
    

    【讨论】:

      猜你喜欢
      • 2019-11-13
      • 2018-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-12
      • 1970-01-01
      相关资源
      最近更新 更多