批处理看起来比feed_dicts更清洁,所以我想了解Tensorflow中的批处理。Tensorflow批处理参数
下面的代码块是否会在批处理中创建32个相同的图像,然后将其送入队列?
# Creates batches of 32 images and 32 labels.
image_batch, label_batch = tf.train.shuffle_batch(
[single_image, single_label],
batch_size=32,
num_threads=4,
capacity=50000,
min_after_dequeue=10000)
一点上下文:我目前有一个文件包含大约5万行。我使用tf.train.string_input_producer
和tf.decode_csv
来读取CSV行,但很困惑,如何提供给tf.train.shuffle_batch
作为参数,各行或包含从文件读取的所有行的张量。
感谢您的回复;我仍然对'tf.train.shuffle_batch()'从哪里绘制32个不同的图像感到困惑。在原始文章的代码片段中,根据提供给'tf.train.shuffle_batch()'的参数判断,我没有看到它能够访问'single_image'之外的数据。 – Eweler
会发生什么事是,TensorFlow评估'single_image'和'single_label'多次(在一个单独的线程,通过'tf.train.start_queue_runners()'创建),并增加了这些来这里面'tf.train.shuffle_batch创建队列( )'。因此,如果'single_image'和'single_label'在每次评估时都有不同的值(例如,因为它们是'ReaderBase.read()'op)的结果),那么结果中会得到不同的图像。如果'single_image'总是评估为相同的值(例如,因为它是一个常量),那么您将获得同一图像的32份副本。 – mrry