当我阅读seq2seq教程here时,我无法理解函数tf.contrib.seq2seq.dynamic_docode
的输出。
在推理sample_id = outputs.sample_id
和logits = self.output_layer(outputs.rnn_output)
中,本教程使用logits = outputs.rnn_output
和sample_id = outputs.sample_id
访问解码器在训练中使用的输出。 logits
和sample_id
代表什么? final_outputs
函数var stk={3:{221:1,220:1,224:1,226:1,198:1},24:{221:1,220:1,224:1,226:1,198:1},33:{198:1},9:{223:1,221:1,220:1,224:1,226:1,198:1},156:{220:1,224:1,226:1}};
console.log(stk[24]);
的内容是什么?
答案 0 :(得分:2)
好的,抱歉这么天真的问题。从here计算出来。因此outputs
的{{1}}是class BasicDecoderOutput(rnn_output, sample_id)
的实例。我认为官方文件应该提供这些信息。
更详细地说:
tf.contrib.seq2seq.BasicDecoder
是解码单元的输出。
rnn_output
是sample_id
返回的ID。对于Helper
,GreedyEmbeddingHelper
为argmax(outputs, axis=-1, output_type=dtypes.int32)
。如果使用sample_id
,则sample_id
的{{1}} outputs
应该是tf.contrib.seq2seq.BasicDecoder
的形状。