LSTM 解码器中的起始标记
Start Token in LSTM Decoder
我了解编码器-解码器模型,以及编码器的输出如何成为解码器的输入。假设这里我只有解码器模型,我有解码器 initial_state(即给出 decoder_states_inputs)。
我想给 "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)
此外,我必须将开始标记添加到我的原始序列中吗?即:
<start> statemnt1
<start> statemnt2
....
如何添加 <start>
和 <end>
符号实际上取决于您如何实现模型的其余部分,但在大多数情况下,结果是相同的。例如在official tensorflow example中,它将这些符号添加到每个句子中。
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:]
我了解编码器-解码器模型,以及编码器的输出如何成为解码器的输入。假设这里我只有解码器模型,我有解码器 initial_state(即给出 decoder_states_inputs)。
我想给 "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)
此外,我必须将开始标记添加到我的原始序列中吗?即:
<start> statemnt1
<start> statemnt2
....
如何添加 <start>
和 <end>
符号实际上取决于您如何实现模型的其余部分,但在大多数情况下,结果是相同的。例如在official tensorflow example中,它将这些符号添加到每个句子中。
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:]