2016-02-02 36 views
3

我想实现一个序列到序列学习的编码器 - 解码器模型。如何在Tensorflow中生成特殊输出字后停止RNN?

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

解码器使用编码器的隐蔽状态,以初始化其隐藏的状态。然后相对于上次生成的输出(y(t-1))及其隐藏状态生成输出。我想在生成一个特殊的输出()时停止这个过程。实际上,我想能够生成不同长度的输出。我如何在Tensorflow中做到这一点?

回答

1

有一个在TensorFlow的顺序对序列模型的教程,一起来看看。

https://www.tensorflow.org/versions/master/tutorials/seq2seq/index.html

+0

我读的代码。但是,当特殊输出生成时,它不会停止。事实上,它将实例分为桶,并根据每个桶的输出大小生成输出。换句话说,如果它产生一个特殊的输出,它不会停止产生输出。 –

0

我想你想是这样的tf.nn.rnnsequence_length。我也想要它,但似乎TensorFlow没有它。

我是做什么,到目前为止,发现解决此限制的好方法是在垫列车的时间与EOS符号解码器的标签。通常情况下,你只需要其中的一个,但填充很多这些并不会造成任何伤害。

在执行时,你要么手动控制每次迭代当第一EOS产生停止或只是运行的时间步长的预定数量,然后从输出删除多余的EOS符号。解码器很快得知,在第一个EOS之后,只有更多的EOS可能会跟随。