什么是TensorFlow中的动态RNN?

时间:2017-03-29 18:07:47

标签: tensorflow recurrent-neural-network

我对动态RNN(即dynamic_rnn)是什么感到困惑。它在TensorFlow中返回输出状态。这些状态和输出是什么?在TensorFlow中,动态RNN中的动态是什么?

2 个答案:

答案 0 :(得分:14)

动态RNN允许可变序列长度。您可能具有输入形状(batch_size, max_sequence_length),但这将允许您在短于max_sequence_length的序列上运行RNN以获得正确的时间步长。

相反,存在静态RNN,其期望运行整个固定RNN长度。在某些情况下,您可能更愿意这样做,例如,无论如何您将输入填充到max_sequence_length

简而言之,dynamic_rnn通常是您想要的可变长度顺序数据。它有一个sequence_length参数,它是你的朋友。

答案 1 :(得分:2)

虽然AlexDelPiero的答案就是我在谷歌上搜索的,但最初的问题却与众不同。您可以查看有关LSTM及其背后的直觉的详细说明。 LSTM是RNN最常见的例子。

http://colah.github.io/posts/2015-08-Understanding-LSTMs/

简短的回答是:状态是从一个时间步到另一个时间步的内部细节。输出是每个时间步长的输出张量。您通常需要将所有输出传递到下一个RNN层或最后一个RNN层的最后一个输出。要获得最后一个输出,您可以使用输出[:, - 1,:]