- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在tensorflow中,tf.nn.static_rnn
和tf.nn.dynamic_rnn
有什么区别,什么时候用?
两者都采用一个 sequence_length
参数,使计算适应输入的实际长度;这不像 static_rnn
仅限于固定大小的输入,对吧?
dynamic_rnn
具有以下额外参数:
parallel_iterations
swap_memory
time_major
但我想这些只是微小的差异。
那么 tf.nn.static_rnn
和 tf.nn.dynamic_rnn
之间的主要区别是什么?我们什么时候应该使用其中一个?
最佳答案
这仍然是一个有用的资源(尽管是几年前写的): http://www.wildml.com/2016/08/rnns-in-tensorflow-a-practical-guide-and-undocumented-features/
其中,Denny Britz 对静态/动态问题有以下评论:
静态
Internally,
tf.nn.rnn
creates an unrolled graph for a fixed RNN length. That means, if you calltf.nn.rnn
with inputs having 200 time steps you are creating a static graph with 200 RNN steps. First, graph creation is slow. Second, you’re unable to pass in longer sequences (> 200) than you’ve originally specified.
动态
tf.nn.dynamic_rnn
solves this. It uses atf.While
loop to dynamically construct the graph when it is executed. That means graph creation is faster and you can feed batches of variable size.
总的来说,他得出的结论是使用 tf.nn.static_rnn
并没有真正的好处,而且在大多数情况下你会想要求助于 tf.nn.dynamic_rnn
不管怎样,我自己也有过同样的经历。
关于python - static_rnn 和 dynamic_rnn 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51425803/
我试图在长字符序列中标记字母。数据的固有结构要求我使用双向方法。 此外基于on this idea我需要在每个时间步访问隐藏状态,而不仅仅是最后一个。 为了尝试这个想法,我使用了固定长度的方法。我目前
我目前正在使用 tf.Dynamic RNN 构建文本分类模型。我的输入长度不同,因此我将输入填充为相同(最大)长度。 我在 tf.nn.dynamic_rnn 中使用了 sequence_lengt
似乎 tf.nn.dynamic_rnn 已被弃用: Warning: THIS FUNCTION IS DEPRECATED. It will be removed in a future vers
我的问题是关于 TensorFlow 方法 tf.nn.dynamic_rnn。它返回每个时间步的输出和最终状态。 我想知道返回的最终状态是最大序列长度的细胞状态,还是由 sequence_lengt
我想加速我的 LSTM 网络,但是当我将它用于 OCR(其中序列具有可变长度)时,我不能使用普通的 LSTM 实现。这就是我使用“tf.nn.dynamic_rnn”的原因。 基于 tensorflo
我正在尝试构建 CNN + RNN 模型,但收到以下错误。任何帮助将不胜感激。 fc2 has shape (?,4096) cell = tf.contrib.rnn.BasicLSTMCell(s
在tensorflow中,tf.nn.static_rnn和tf.nn.dynamic_rnn有什么区别,什么时候用? 两者都采用一个 sequence_length 参数,使计算适应输入的实际长度;
对于单个的 RNNCell , 使用色的 call 函数进行运算时 ,只是在序列时间上前进了一步 。 如使用 x1、 ho 得到此h1, 通过 x2 、 h1 得到 h2 等
我无法理解 tf.nn.dynamic_rnn 的输出 tensorflow 函数。该文档仅说明输出的大小,但并未说明每行/列的含义。从文档: outputs: The RNN output Tens
tensorflow.nn.dynamic_rnn给定 cell 创建一个循环神经网络,它是 RNNCell 的一个实例,并返回一对包含: outputs:RNN 输出张量 state:最终状态 这是
我有一个形状为 [batch, None, dim] 的 3-D 张量,其中第二维(即时间步长)是未知的。我使用 dynamic_rnn 来处理此类输入,如以下代码片段所示: import numpy
我正在尝试使用 tf.nn.dynamic_rnn 在 TensorFlow 0.9.0 中使用词嵌入和递归神经网络编写语言模型。图操作,但我不明白input是怎么回事张量是结构化的。 假设我有一个包
我想保存我的 LSTM 的最终状态,以便在我恢复模型时包含它并可用于预测。如下所述,当我使用 tf.assign 时,Saver 只知道最终状态。但是,这会引发错误(也在下面解释)。 在训练期间,我总
我正在尝试使用低级 API tf.nn.raw_rnn 复制 tf.nn.dynamic_rnn 的行为。为此,我使用相同的数据 block 、设置随机种子并使用相同的 hparams 来创建单元格和
我想构建一个用于回归的玩具 LSTM 模型。 This不错的教程对于初学者来说已经太复杂了。 给定一个长度为 time_steps 的序列,预测下一个值。考虑 time_steps=3 和序列: ar
根据Tensorflow官网,(https://www.tensorflow.org/api_docs/python/tf/contrib/rnn/BasicLSTMCell#zero_state)z
我无法理解 tensorflow 的 dynamic_rnn 的输入参数.如果我能理解如何转换 static_rnn 会很有帮助输入 dynamic_rnn输入。 对于 static_rnn ,输入应
这里我问的是动态行为是如何工作的。这是 tensorflow documentation对于上面的dynamic_rnn函数。该函数创建的 RNN 输入 block 的最大长度是多少?它会根据最大的输
默认情况下,函数 dynamic_rnn 只输出每个时间点的隐藏状态(称为 m),可以通过以下方式获得: cell = tf.contrib.rnn.LSTMCell(100) rnn_outputs
上下文 我正在阅读 Hands on ML 的第二部分并且正在寻找关于何时使用“输出”以及何时在 RNN 的损失计算中使用“状态”的一些清晰度。 在书中(对于那些拥有该书的人,第 396 页),作者说
我是一名优秀的程序员,十分优秀!