在Tensorflow中生成特殊输出字后,如何停止RNN?

在Tensorflow中生成特殊输出字后,如何停止RNN?,tensorflow,recurrent-neural-network,Tensorflow,Recurrent Neural Network,我想实现一个用于序列到序列学习的编码器-解码器模型 编码器逐字读取输入序列并更新其隐藏状态 解码器使用编码器的隐藏状态初始化其隐藏状态。然后根据最后生成的输出(y(t-1))及其隐藏状态生成输出。我想在生成特殊输出()时停止此过程。事实上,我希望能够生成不同长度的输出。如何在Tensorflow中实现这一点?我想您需要类似tf.nn.rnn的sequence\u length。我也想要,但TensorFlow似乎没有 到目前为止,我一直在做的事情是,在火车时刻用EOS符号填充解码器标签,这是一个

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

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


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

我想您需要类似
tf.nn.rnn
sequence\u length
。我也想要,但TensorFlow似乎没有

到目前为止,我一直在做的事情是,在火车时刻用EOS符号填充解码器标签,这是一个很好的绕过此限制的方法。通常,您只需要其中一个,但填充大量不会造成任何伤害


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

TensorFlow中有一个关于序列到序列模型的教程,请看。我读了那个密码。但是,当生成特殊输出时,它不会停止。事实上,它将实例划分为多个bucket,并根据每个bucket的输出大小生成输出。换句话说,如果它生成了一个特殊的输出,它并不是停止生成输出的方法。