在tensorflow中出列FIFOQueue总是返回相同的元素

时间:2017-06-24 23:47:11

标签: multithreading tensorflow queue

我有一些非常愚蠢的错误与tensorflow,我很确定这是由于我的方面的错误,但现在两天没有找到它。代码大致如下:

train_gen = train_generator(X_train_n,indices_train_n)

train_generator是一个python生成器函数(你可以得到调用.next()的下一个元素)。我用它来从原始数据中预处理批次。

会前:

queue_train_n = tf.FIFOQueue(capacity=5,dtypes=[tf.float32,tf.float32]) enqueue_op_train_n = queue_train_n.enqueue(train_gen.next()) number_of_threads_train_n = 5 qr_train_n = tf.train.QueueRunner(queue_train_n,[enqueue_op_train_n]*number_of_threads_train_n) tf.train.add_queue_runner(qr_train_n)

在时代开始之前:

coord = tf.train.Coordinator() threads = tf.train.start_queue_runners(coord=coord)

然后,在sess.run中,我调用model.train_dequeue_op(模型是模型的类)执行queue_train_n.dequeue()并使用它来存储我的“批量变量”self.X和self.y中的数据

现在这里有一个奇怪的事情:每当我调用model.train_dequeue_op并查看检索到的实际值(这些是numpy数组)时,它们对于每个出列操作都是完全相同的。我已经检查过,train_gen是否正常工作并且确实如此:如果我只是在for循环中从train_gen产生批次,它们总是不同的。显然,dequeue操作只检索队列中的值,但不会从此队列中删除。有没有人见过这样的东西,知道解决方案?这是我见过的最奇怪的错误之一...如果有人只是想知道要检查什么,请告诉我!

非常感谢你的帮助!

0 个答案:

没有答案