我看到了一个使用 tensorflow 训练 cifar10 数据的例子: https ://github.com/tensorflow/models/tree/master/tutorials/image/cifar10
该代码使用 tf.train.batch 从多个单个图像生成一批图像,并使用 prefetch_queue 创建一个批处理队列。我知道当训练数据很大时,有必要使用队列来预取数据。我猜 tf.train.batch 在内部维护一个队列(因为它有一个容量参数)。由于 tf.train.battch 中已经维护了一个批处理队列,是否有必要使用 tf.contrib.slim.prefetch_queue 创建另一个队列?tf.contrib.slim.prefetch_queue 到底做了什么?
cifar-10 示例代码的关键部分如下所示:
import tensorflow as tf
images, labels = tf.train.batch(
[image, label],
batch_size=...,
num_threads=...,
capacity=...,
min_after_dequeue=...)
batch_queue = tf.contrib.slim.prefetch_queue.prefetch_queue(
[images, labels],
capacity=...)