我想用一句话来预测五个不同的二进制值。对于每个二进制值,我想预测一个单编码的值。
为此,我编写了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)
我的assistant_input的输入就像[0,0,0,1,0]。 输出是一键编码的[0,0,1,0]
我首先想到也许可以直接将第一个模型的输出用作第二个模型的输入。问题:我的secon模型的输出会发生变化,我不知道第二个模型的输出层如何能够预测二维输出,例如
[
[0,0,0,1]
[0,0,1,0]
[0,0,0,1]
[0,0,0,1]
[1,0,0,0]
]
所以我的问题:
是否可以通过具有二维输出层将第一模型的数据直接用作第二模型的输入?
或2.可能是以下情况:对于第一个模型的每个二进制值,我传递一个单编码的数组作为第二个模型的输入。因此,第二个模型存在5次。仅在所有5秒模型都预测输出正确的情况下,我的完整模型才是正确的。
答案 0 :(得分:0)
我重塑了输出层并评估了重塑后的层。所以我的最后两层看起来像这样:
main_output = Dense(20,activation='sigmoid')(concatenated_layer)
reshaped_out = Reshape(target_shape=(5,4))(main_output)