我有一些非常愚蠢的错误与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操作只检索队列中的值,但不会从此队列中删除。有没有人见过这样的东西,知道解决方案?这是我见过的最奇怪的错误之一...如果有人只是想知道要检查什么,请告诉我!
非常感谢你的帮助!