什么是TensorFlow中的动态RNN?

什么是TensorFlow中的动态RNN?,tensorflow,recurrent-neural-network,Tensorflow,Recurrent Neural Network,我对什么是动态RNN(即dynamic\u RNN)感到困惑。它在TensorFlow中返回输出和状态。这些状态和输出是什么?什么是动态RNN中的动态,在TensorFlow中?动态RNN允许可变序列长度。您可能有一个输入形状(批大小,最大序列长度),但这将允许您在短于最大序列长度的序列上运行RNN以获得正确的时间步数 相比之下,存在静态RNN,它们希望运行整个固定RNN长度。在某些情况下,您可能更愿意这样做,例如,您将输入填充到max\u sequence\u length 简而言之,dyna

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

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

相比之下,存在静态RNN,它们希望运行整个固定RNN长度。在某些情况下,您可能更愿意这样做,例如,您将输入填充到
max\u sequence\u length


简而言之,
dynamic\u rnn
通常是可变长度序列数据所需要的。它有一个
sequence\u length
参数,它是你的朋友。

虽然亚历克斯德皮耶罗的答案是我搜索的,但最初的问题不同。您可以查看关于LSTM及其背后的直觉的详细描述。LSTM是RNN最常见的示例


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

什么是状态和输出?你能解释一下吗?@xlax这里有一个很好的解释和输出示例:看起来
sequence\u length
是一个向量,指定每个实例/批中的长度。但理想情况下,RNN应该能够从长度推断长度(输入可以是可变长度列表/数组的列表/数组),因此您不需要指定
序列长度。我认为keras LSTM很好地处理了这个问题,但我不确定。第一段和链接没有回答这个问题