根据我的理解,seq2seq模型解码器的第一个输入应该是开始标记。但是当我阅读tensorflow/contrib/seq2seq/python/ops/helper.py
中的TrainingHelper代码时,我发现它只是返回目标标记的第一个标记作为第一个输入:
def initialize(self, name=None): with ops.name_scope(name, "TrainingHelperInitialize"): finished = math_ops.equal(0, self._sequence_length) all_finished = math_ops.reduce_all(finished) next_inputs = control_flow_ops.cond( all_finished, lambda: self._zero_inputs, lambda: nest.map_structure(lambda inp: inp.read(0), self._input_tas)) return (finished, next_inputs)
这是正确的吗?
回答:
事实证明,您需要在输入到TrainHelper之前自己添加开始标记。