我指的是 keras 中 seq2seq 模型的示例代码(https://github.com/fchollet/keras/blob/master/examples/addition_rnn.py)。型号为:
model = Sequential()
model.add(RNN(HIDDEN_SIZE, input_shape=(MAXLEN, len(chars))))
model.add(RepeatVector(DIGITS + 1))
for _ in range(LAYERS):
model.add(RNN(HIDDEN_SIZE, return_sequences=True))
model.add(TimeDistributed(Dense(len(chars))))
model.add(Activation('softmax'))
在这个模型中,我们将编码输入向量从编码器的最后状态传递到解码器中的每个时间步。
现在,除了编码的输入向量之外,我们没有将任何其他输入传递给解码器,但在所有 seq2seq 模型中,我们也将输出序列(时间延迟)与编码的输入一起传递。
这是一个有效的 seq2seq 模型吗?令我惊讶的是,它运作良好。这是如何工作的?