首页 > 解决方案 > 使用 Tensorflow 2.0 addson seq2seq BasicDecoder 的困惑

问题描述

下面是在没有 sequence_length 参数的情况下调用 decoder() 的代码片段。为清楚起见,省略了其他代码。

decoder_cell = keras.layers.LSTMCell(units)
output_layer = keras.layers.Dense(len(OUTPUT_CHARS) + 1)

decoder = tfa.seq2seq.basic_decoder.BasicDecoder(decoder_cell,
                                                 sampler,
                                                 output_layer=output_layer)
final_outputs, final_state, final_sequence_lengths = decoder(
    decoder_embeddings,
    initial_state=encoder_state) # NOTE: without sequence_lengths argument here!

下面显示了调用解码器的第二个示例,来自本文的答案

final_outputs, final_state, final_sequence_lengths = decoder(
decoder_embeddings, initial_state=encoder_state,
sequence_length=sequence_lengths) # NOTE: it use sequence_lengths of input tensor

您能否帮助澄清以下混淆?

  1. 我们什么时候应该传递sequence_lengths论点,decoder()什么时候没有必要?

  2. BasicDecoder继承了which 在其方法BaseDecoder中没有sequence_lengths参数。call源代码在这里为什么在将sequence_lengths参数传递给时它会起作用decoder()

非常感谢!

标签: tensorflowseq2seq

解决方案


我在文档的某个地方找到了带有 sequence_length 参数的地方https://www.tensorflow.org/addons/api_docs/python/tfa/seq2seq/BaseDecoder?hl=en#initialize


推荐阅读