tensorflow dynamic_rnn和rnn有什么区别?
recurrent-neural-network
tensorflow
5
0

tf.nn中有几个与tf.nn相关的类。在我在网上找到的示例中, tf.nn.dynamic_rnntf.nn.rnn似乎可以互换使用,或者至少我无法弄清楚为什么使用其中一个代替另一个。有什么区别?

参考资料:
Stack Overflow
收藏
评论
共 2 个回答
高赞 时间 活跃

来自Tensorflow中的RNN, Denny Britz 撰写的实用指南和未记录的功能 ,于2016年8月21日发布。

tf.nn.rnn创建一个固定RNN长度的展开图。这意味着,如果使用具有200个时间步长的输入调用tf.nn.rnn ,则将创建具有200个RNN步骤的静态图形。首先,图形创建很慢。其次,您无法传递比原来指定的更长的序列(> 200)。

tf.nn.dynamic_rnn解决了这个问题。它使用tf.While循环在执行图形时动态构建图形。这意味着图形创建速度更快,并且可以喂入可变大小的批处理。

收藏
评论

它们几乎相同,但是输入和输出的结构略有不同。从文档:

tf.nn.dynamic_rnn

该函数在功能上与上面的函数rnn相同,但是>执行输入的完全动态展开。

rnn不同,输入输入不是Python的张量列表,每帧一个。相反,输入可以是单个Tensor,其中最大时间是第一维或第二维(请参阅参数time_major )。或者,它可以是(可能是嵌套的)张量元组,它们中的每一个都具有匹配的批次和时间维度。相应的输出要么是具有相同时间步长和批处理大小的单个Tensor,要么是此类张量的(可能嵌套的)元组,与cell.output_size的嵌套结构匹配。

有关更多详细信息,请浏览

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号