【问题标题】:How do I use my LSTM output as input for another LSTM in keras?如何使用我的 LSTM 输出作为 keras 中另一个 LSTM 的输入?
【发布时间】:2019-03-03 23:39:14
【问题描述】:

一句话,我要预测五个不同的二进制值。对于每个二进制值,我想预测一个 one-hot 编码值。

为此,我编写了 2 个不同的 LSTM。但是现在我不确定如何使用第一个 LSTM 的输出在我的第二个 LSTM 中正确使用它。首先,我的两个模型:

第一个模型

model = Sequential()
model.add(Embedding(word_count, embedding_size, input_length = sentence_length))
model.add(LSTM(hidden_layer_units))
model.add(Dense(5))
model.add(Activation("sigmoid"))

对于 5 个值,输出可以是 0 或 1。 F.e. [0,1,0,0,1]

第二个模型

main_input = Input(shape = (sentence_length,), dtype = 'int32', name = 'main_input')
embedding = Embedding(word_count, embedding_size,
                    input_length=sentence_length)(main_input)
lstm_out = LSTM(hidden_layer_units)(embedding)

auxiliary_input = Input(shape=(5,), name='aux_input')
x = concatenate([lstm_out, auxiliary_input])
main_output = Dense(4, activation='sigmoid', name='main_output')(x)

model = Model(inputs=[main_input, auxiliary_input], outputs=main_output)

我的辅助输入的输入类似于 [0,0,0,1,0]。 输出是 one-hot 编码的 [0,0,1,0]

我的想法

我首先想到也许我可以将我的第一个模型的输出直接用作我的第二个模型的输入。问题:我的第二个模型的输出会改变,我不知道我的第二个模型怎么可能有一个输出层来预测二维输出,比如

[
 [0,0,0,1]
 [0,0,1,0]
 [0,0,0,1]
 [0,0,0,1]
 [1,0,0,0]
]

所以我的问题:

  1. 是否可以通过二维输出层将第一个模型的数据直接用作第二个模型的输入?

    或 2. 以下是否可能:对于我的第一个模型的每个二进制值,我将一个单热编码数组作为输入传递给第二个模型。所以第二个模型存在5次。只有当所有 5 秒模型都预测输出正确时,我的完整模型才是正确的。

【问题讨论】:

    标签: python tensorflow keras lstm


    【解决方案1】:

    我重新塑造了我的输出层并评估了重新塑造的层。所以我的最后两层看起来像这样:

    main_output = Dense(20,activation='sigmoid')(concatenated_layer)
    reshaped_out = Reshape(target_shape=(5,4))(main_output)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-14
      • 1970-01-01
      相关资源
      最近更新 更多