首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >static_rnn和dynamic_rnn有什么区别?

static_rnn和dynamic_rnn有什么区别?
EN

Stack Overflow用户
提问于 2018-07-19 14:53:47
回答 1查看 5.2K关注 0票数 7

在tensorflow中,tf.nn.static_rnntf.nn.dynamic_rnn有什么区别,以及何时使用它们?

这两种方法都采用了一个sequence_length参数,使计算适应于输入的实际长度;这并不是说static_rnn仅限于固定大小的输入,对吗?

dynamic_rnn有以下额外的参数:

  • parallel_iterations
  • swap_memory
  • time_major

但我认为这些只是微小的差别。

那么,tf.nn.static_rnntf.nn.dynamic_rnn的主要区别是什么?我们什么时候应该使用一种而另一种呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-19 15:04:28

这仍然是一个有用的资源(尽管是几年前编写的):http://www.wildml.com/2016/08/rnns-in-tensorflow-a-practical-guide-and-undocumented-features/

在报告中,Denny Britz对静态/动态问题有以下评论:

静态

在内部,tf.nn.rnn为固定的RNN长度创建一个展开图。这意味着,如果您调用具有200个时间步骤的输入的tf.nn.rnn,您将创建一个包含200个RNN步骤的静态图。首先,图形的创建是缓慢的。其次,您无法传递比最初指定的更长的序列(> 200)。

动态

tf.nn.dynamic_rnn解决了这个问题。它使用一个tf.While循环在执行图时动态地构造它。这意味着图形创建的速度更快,并且可以为不同大小的批次提供饲料。

总的来说,他的结论是,使用tf.nn.static_rnn没有真正的好处,在大多数情况下,您会想求助于tf.nn.dynamic_rnn

不管有什么价值,我自己也有过同样的经历。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51425803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档