In TensorFlow, the old input pipeline used a series of queues and queue flows, and removed objects from these queues. For example, the string_input_producer for file names, tf.train.batch as a queue for batch processing, etc.
Therefore, before training you had to write:
coord = tf.train.Coordinator() threads = tf.train.start_queue_runners(sess=sess, coord=coord)
To create and run threads that populate all of these queues.
I updated my data entry pipeline from this old model to use the new one currently located in tf.contrib.data.TFRecordDataset to read the TFRecord files that I use for training.
I noticed that I can remove:
coord = tf.train.Coordinator() threads = tf.train.start_queue_runners(sess=sess, coord=coord)
and the input conveyor is still running smoothly.
So my question is this:
How does the new inlet piping work under the hood? Does he even use queues? Or does he use them, and just start them yourself? In addition, if he uses them, is there a way to control how complete they are, since the old conveyor did this automatically and the new one did not?
source share