RNN的图表使用模式

时间:2016-03-28 09:22:59

标签: tensorflow

我对默认图表中的张量/操作/变量的生命周期感到困惑。

在RNN中,由于输入数据的长度可变,图形结构将在每次迭代时发生变化。是否应该在每次训练迭代中创建/销毁单独的图形以适应图形的变化结构,或者是否有办法坚持使用默认图形?

另外,如果构建新图表,他们如何共享变量?

1 个答案:

答案 0 :(得分:1)

对于RNN,有两种选择:tf.nn.rnntf.nn.dynamic_rnn。暂时不会创建或销毁图形。

第一个函数创建T个子图,其中T是你提供的python输入列表的长度(也就是说,输入是一个len T python形状列表{{ 1}}张量)。 [batch, depth]始终需要固定数量的时间步长。注意,您可以通过传递tf.nn.rnn参数来控制为给定步骤运行哪些子图;然后,该函数使用条件评估(sequence_length)来确定要运行的操作。

相比之下,tf.cond使用特殊的TensorFlow while循环和其他技巧,在图结构中引入了有限类型的循环。在这种情况下,“时间步长”只有一个子图,它会一直反复运行,直到您的输入被处理完毕。在这种情况下,您的输入是dynamic_rnn张量,其尺寸为3D(如果您设置[batch, time, depth],则可以为[time, batch, depth]);前两个维度可能因步骤而异。