当我阅读seq2seq教程here时,我无法理解函数tf.contrib.seq2seq.dynamic_docode
的输出。
本教程使用sample_id = outputs.sample_id
and logits = self.output_layer(outputs.rnn_output)
在推理中访问解码器使用的输出,logits = outputs.rnn_output
and sample_id = outputs.sample_id
。 logits
和sample_id
代表什么?功能final_outputs
的tf.contrib.seq2seq.dynamic_docode
的内容是什么?
好的,抱歉这么天真的问题。从here中找出来。所以outputs
的tf.contrib.seq2seq.BasicDecoder
是class BasicDecoderOutput(rnn_output, sample_id)
的一个例子。我认为官方文件应该提供这些信息。
而且更详细:
rnn_output
是解码单元的输出。
sample_id
是由Helper
返回的id。对于GreedyEmbeddingHelper
,sample_id
是argmax(outputs, axis=-1, output_type=dtypes.int32)
。如果使用sample_id
is,outputs
的tf.contrib.seq2seq.BasicDecoder
中的[num_timesteps]
应该是GreedyEmbeddingHelper
的形状。