tf.nn.dynamic_rnn
执行什么样的计算?它如何使用参数cell
和inputs
(创建结果(?
我已经在文档中查找了,但我没有找到解释。
tf.nn.static_rnn
vs. tf.nn.dynamic_rnn
在内部,tf.nn.static_rnn
为固定的 RNN 长度创建一个展开的图。这意味着,如果你调用具有 200 个时间步长的输入的tf.nn.static_rnn
,你正在创建一个具有 200 个 RNN 步长的静态图。首先,图形创建速度很慢。其次,您无法传入比最初指定的序列更长的序列 (> 200(。
tf.nn.dynamic_rnn
解决了这个问题。它使用tf.while_loop
在执行时动态构造图形。这意味着图形创建速度更快,您可以喂入可变大小的批次。
性能如何?
您可能认为tf.nn.static_rnn
比其动态对应物更快,因为它预先构建了图形。
请注意,强烈建议使用
tf.nn.dynamic_rnn
。
参考: http://www.wildml.com/2016/08/rnns-in-tensorflow-a-practical-guide-and-undocumented-features/