3

我想为序列到序列的学习实现一个编码器-解码器模型。

编码器逐字读取输入序列并更新其隐藏状态。

解码器使用编码器的隐藏状态来初始化其隐藏状态。然后根据最后生成的输出 (y(t-1)) 及其隐藏状态生成输出。我想在生成特殊输出 () 时停止此过程。事实上,我希望能够生成不同长度的输出。我如何在 Tensorflow 中做到这一点?

4

1 回答 1

1

我想你想要类似sequence_lengthof 的东西tf.nn.rnn。我也想要它,但似乎 TensorFlow 没有它。

到目前为止,我正在做的并找到解决此限制的好方法是在训练时用 EOS 符号填充解码器标签。通常,您只需要其中一个,但填充其中的很多并不会造成任何伤害。

在执行时,您可以手动控制每次迭代以在生成第一个 EOS 时停止,或者只运行预定义数量的时间步,然后从输出中删除额外的 EOS 符号。解码器很快了解到,在第一个 EOS 之后,可能只会有更多的 EOS。

于 2016-03-11T01:17:20.387 回答