我使用 keras 训练了一个 seq2seq 模型(keras.models.Model)。模型的 X 和 y 是 [X_encoder, X_decoder] 和 y 即编码器和解码器输入和标签的列表(请注意,解码器输入 X_decoder 是“y”,比实际 y 提前一个位置。基本上,教师强迫)。
所以我现在的问题是在训练之后,当涉及到我没有任何标签的实际预测时,如何为我的输入提供“X_decoder”?还是我训练别的东西?
这是模型定义的一个片段,如果有帮助的话:)
# Encoder
encoder_inputs = Input(batch_shape=(batch_size, max_len,), dtype='int32')
encoder_embedding = embedding_layer(encoder_inputs)
encoder_LSTM = CuDNNLSTM(hidden_dim, return_state=True, stateful=True)
encoder_outputs, state_h, state_c = encoder_LSTM(encoder_embedding)
# Decoder
decoder_inputs = Input(shape=(max_len,), dtype='int32')
decoder_embedding = embedding_layer(decoder_inputs)
decoder_LSTM = CuDNNLSTM(hidden_dim, return_state=True, return_sequences=True)
decoder_outputs, _, _ = decoder_LSTM(decoder_embedding, initial_state=[state_h, state_c])
# Output
outputs = TimeDistributed(Dense(vocab_size, activation='softmax'))(decoder_outputs)
model = Model([encoder_inputs, decoder_inputs], outputs)
# model fitting:
model.fit([X_encoder, X_decoder], y, steps_per_epoch=int(number_of_train_samples/batch_size),
epochs=epochs)