批处理队列(tf.train.batch)是否不保留顺序?

时间:2016-01-25 19:47:41

标签: tensorflow

我使用tf.train.string_input_producer设置了一个生成文件名的队列,shuffle选项设置为False,使用tf.train.batch连接到批处理队列(即非改组)。查看正在阅读的示例列表,虽然排序几乎完美保留,但严格来说并非如此。例如,前几个样本是4,2,1,3,5,6,7,8,9,11,10 ......,其中数字对应于第一个文件读取中样本的位置。之后,几百个样本的排序几乎完美,但它偶尔会切换相邻的样本。这是预期的行为吗?是否有某种方法可以强制保留排序,以便不必跟踪何时读取哪个文件?

我应该说我通过一次排队0或1个样本并在批处理队列中将enqueue_many设置为True来有条件地丢弃一些样本。然而,上述样本都没有被跳过,因此原则上不应该是一个问题。

1 个答案:

答案 0 :(得分:4)

正如雅罗斯拉夫在评论中提到的那样,一个线程就可以解决问题。除了单个线程之外,你应该设置num_epochs = 1.如果你不这样做,它将继续产生批次,看起来顺序不会保留,因为它从头开始循环。我希望这有效。

尽管如此,我希望有人可以为解决这个问题找到更好的答案!