输入管道何时返回新的数据批处理?

时间:2018-02-16 19:50:13

标签: tensorflow input pipeline rnn

我正在使用带队列的输入管道和TFRecordReader来读取tfrecord文件,并将数据直接用于dynamic_rnn函数。 因此,例如,如果我有输入管道的最后一步:

xb, yb = tf.train.shuffle_batch([x, y], batch_size, capacity, min_after_dequeue, num_threads=1)

我直接向dynamic_rnn函数提供xb我明白它每次运行时都会获取一个新的xb。但到底是什么时候?所以当我构建模型时,dynamic_rnn函数被初始化一次,它是否在内部获取这些新的xb数据?

例如,如果我将此指定为dynamic_rnnsequence_length=xb.shape[1]的sequence_length,或者如果我执行此类print xb,则这是否意味着将调用xb并返回新数据2次?

1 个答案:

答案 0 :(得分:0)

.shape上的{p> Tensor在构建图形时不会运行它,print也不会在获取Python元数据时运行它。即便如此,多次引用Tensor会为每session.run次调用提供一个值(除非它在tf.while_loop或其他控制流构造中)。 Tensor来自包含的队列。

有关TensorFlow队列的详细信息,请参阅https://www.tensorflow.org/api_guides/python/threading_and_queues(这是shuffle_batch的实现方式)。