tf.nn
中有几个与RNN相关的类。在我在网上找到的例子中,tf.nn.dynamic_rnn
和tf.nn.rnn
似乎可以互换使用,或者至少我不能弄清楚为什么要用其中一个代替另一个。它们之间有什么区别?
tf.nn
中有几个与RNN相关的类。在我在网上找到的例子中,tf.nn.dynamic_rnn
和tf.nn.rnn
似乎可以互换使用,或者至少我不能弄清楚为什么要用其中一个代替另一个。它们之间有什么区别?
来自Denny Britz的《TensorFlow中的RNN:实用指南和未记录功能》,发表于2016年8月21日。
tf.nn.rnn
创建一个长度固定的展开图。这意味着,如果您使用具有200个时间步长的输入调用tf.nn.rnn
,则会创建一个具有200个RNN步骤的静态图。首先,图形创建慢。其次,您无法传入比最初指定的时间步长更长的序列(> 200)。
tf.nn.dynamic_rnn
解决了这个问题。它使用tf.While
循环在执行时动态构建图形。这意味着图形创建更快,您可以提供可变大小的批次。
tf.nn.rnn
的等效函数是什么,似乎是tf.nn.static_rnn
。 - nbro