def parallel_reader(self, min_queue_examples=1024):
"""Parallel record reader
Primarily used for Training ops
Args:
min_queue_examples: min number of queue examples after dequeue
Returns
a single item from the tfrecord files
"""
with tf.name_scope('parallel_reader'):
data_files = self.dataset.data_files()
filename_queue = tf.train.string_input_producer(
data_files, num_epochs=self.num_epochs, shuffle=self.shuffle)
if self.shuffle:
examples_queue = tf.RandomShuffleQueue(
capacity=self.capacity, min_after_dequeue=min_queue_examples, dtypes=[tf.string])
else:
examples_queue = tf.FIFOQueue(
capacity=self.capacity, dtypes=[tf.string])
enqueue_ops = []
for _reader in self._readers:
_, value = _reader.read(filename_queue)
enqueue_ops.append(examples_queue.enqueue([value]))
tf.train.queue_runner.add_queue_runner(
tf.train.queue_runner.QueueRunner(examples_queue, enqueue_ops))
return examples_queue.dequeue()
评论列表
文章目录