我使用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
来有条件地丢弃一些样本。然而,上述样本都没有被跳过,因此原则上不应该是一个问题。
答案 0 :(得分:4)
正如雅罗斯拉夫在评论中提到的那样,一个线程就可以解决问题。除了单个线程之外,你应该设置num_epochs = 1.如果你不这样做,它将继续产生批次,看起来顺序不会保留,因为它从头开始循环。我希望这有效。
尽管如此,我希望有人可以为解决这个问题找到更好的答案!