Keras中的Seq2Seq用于预测向量序列的下一个元素

时间:2019-02-15 18:00:20

标签: python keras seq2seq

不好意思。我是神经网络的初学者。我必须在Keras中使用seq2seq模型来预测矢量序列 x [0],x [1],...,x [N- 1]

此向量序列具有可变长度,即 N 不是固定数字。序列的元素(向量)具有固定长度 m 。也就是说,我的数据 x [0],x [1],...,x [N-1] 的格式为

[x [0,0],x [0,1],...,x [0,m-1]],[x [1,0],x [1,1], ...,x [1,m-1]],...,[x [N-1,0],x [N-1,1],...,x [N-1,m-1 ]]

而且我必须预测下一个向量 x [N] = [x [N,0],x [N,1],...,x [N,m-1]]

我是否正确理解我需要的模型在Keras中用这样的代码段描述了?

data_dim = m

model = Sequential()
model.add(LSTM(1, input_shape=(None, data_dim)))

非常感谢您!

1 个答案:

答案 0 :(得分:0)

要构建逐个序列模型,您需要使用Keras的功能性API,而不是构建Sequential()模型。在Keras博客上有一个很好的示例,说明了如何执行此操作:https://blog.keras.io/a-ten-minute-introduction-to-sequence-to-sequence-learning-in-keras.html

from keras.models import Model
from keras.layers import Input, LSTM, Dense

encoder_inputs = Input(shape=(None, num_encoder_tokens))
encoder = LSTM(latent_dim, return_state=True)
encoder_outputs, state_h, state_c = encoder(encoder_inputs)
encoder_states = [state_h, state_c]
decoder_inputs = Input(shape=(None, num_decoder_tokens))
decoder_lstm = LSTM(latent_dim, return_sequences=True, return_state=True)
decoder_outputs, _, _ = decoder_lstm(decoder_inputs,
                                     initial_state=encoder_states)
decoder_dense = Dense(num_decoder_tokens, activation='softmax')
decoder_outputs = decoder_dense(decoder_outputs)

model = Model([encoder_inputs, decoder_inputs], decoder_outputs)