0

我了解编码器-解码器模型,以及编码器的输出如何成为解码器的输入。假设这里我只有解码器模型,我有解码器 initial_state(即给出了解码器状态输入)。

我想将“decoder_inputs”作为开始标记(例如 < start > )......但我不知道如何以及以什么格式?!

decoder_lstm = LSTM(n_units, return_sequences=True, return_state=True)    
decoder_outputs, state_h, state_c = decoder_lstm(decoder_inputs, initial_state=decoder_states_inputs)

另外,我必须将开始标记添加到我的原始序列中吗?IE:

 <start> statemnt1
 <start> statemnt2
 ....
4

1 回答 1

2

如何添加<start><end>符号实际上取决于您如何实现模型的其余部分,但在大多数情况下,结果是相同的。例如在官方的 tensorflow 示例中,它将这些符号添加到每个句子中。

def preprocess_sentence(w):
    # other preprocessing

    w = w.rstrip().strip()

    # adding a start and an end token to the sentence
    # so that the model know when to start and stop predicting.
    w = '<start> ' + w + ' <end>'
    return w

# rest of the code
# ... word2idx is a dictionary that map words into unique ids

然后,在标记化部分,<start>符号<end>分别映射到 4 和 5。但是,正如您在图片中看到的,它只提供<start>解码器的输入和<end>解码器的输出。这意味着我们的数据类似于:

decoder_inp = raw_decoder_input[:, 0:-1]
decoder_out = raw_decoder_input[:, 1:]

在此处输入图像描述

于 2019-01-14T12:20:59.617 回答