我有一个python函数,当我调用它时会自动生成一个(数据,标签)对。我不知道如何将此函数附加到TensorFlow FIFOQueue,以便队列充满从我的函数生成的数据。我到目前为止的代码是:
myq = tf.FIFOQueue(5000, [tf.float32, tf.float32], [[4],[1]])
enqueue_op = myq.enqueue(read_data()) # read_data() returns two numpy arrays of shape [4] and [1]
qr = tf.train.QueueRunner(myq, [enqueue_op]*2)
...
threads = qr.create_threads(sess=sess,coord=coord, start=True)
但是,这只调用函数read_data()一次并继续将相同的值推入队列。如何正确地将我的函数连接到enqueue方法,以便我可以使用我的函数中的数据填充队列(最好在后台使用多个线程)。谢谢你的帮助。
答案 0 :(得分:2)
我知道read_data
是您自己的代码,而不是TF操作。您需要enqueue_op
的占位符,然后使用feed_dict
提供数据。
# Graph setup
x_enqueue = tf.placeholder(tf.float32, shape=(4))
y_enqueue = tf.placeholder(tf.float32, shape=(1))
enqueue_op = myq.enqueue([x_enqueue, y_enqueue])
...
# Enqueue loop:
x_read, y_read = read_data()
sess.run(enqueue_op, feed_dict={x_enqueue: x_read, y_enqueue: y_read})