我正在研究一个分类问题,我们有一个成对输入,
X1 = Input(shape=(input_size,), name='input_1')
X2 = Input(shape=(input_size,), name='input_2')
,预期输出为二进制。
为了解决这个问题,我首先设计一个encoder
,它采用这些成对输入并用(encoder_size, 2)
的形状对它们进行编码。接下来,我想设计一个RNN,在那里可以将训练集视为时间序列。换句话说,我会首先提供(X1, X2)
,然后提供(X1, X3)
等等。原因是前一个输入可能包含一些需要记忆的全局信息,这可能有助于对后来的输入进行预测。
对于每个输入对,我希望看到二进制预测结果。模型保留了它的记忆并对下一个输入对进行预测。
我附上下面的代码,但我不确定它是否能像我描述的那样工作。
encoder = Sequential()
encoder.add(Dropout(dropout_rate, input_shape=(input_size,)))
encoder.add(Dense(encoder_size, activation='relu'))
encoder.add(Reshape((-1,1)))
encoded_1 = encoder(X1)
encoded_2 = encoder(X2)
merged = concatenate([encoded_1, encoded_2])
# RNN model
comparer = Sequential()
comparer.add(LSTM(64, input_shape=(encoder_size,2), return_sequences=False))
comparer.add(Dropout(dropout_rate))
comparer.add(Dense(1))
comparer.add(Activation('sigmoid'))
Y = comparer(merged)
model = Model(inputs=[X1, X2], outputs=Y)
如果没有,那么正确的方法是什么?如果是,那么将(encoder_size, 2)
视为时间序列而不是整个训练集的方式是什么?