如何设计RNN将所有训练集视为Keras的时间序列?

时间:2018-01-17 21:31:57

标签: python keras rnn

我正在研究一个分类问题,我们有一个成对输入,

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)视为时间序列而不是整个训练集的方式是什么?

0 个答案:

没有答案