我正在使用带队列的输入管道和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_rnn
,sequence_length=xb.shape[1]
的sequence_length,或者如果我执行此类print xb
,则这是否意味着将调用xb并返回新数据2次?
答案 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
的实现方式)。