4
イテレータから塗りつぶされたキューを作成したいと思います。以下MWEではしかし、常に同じ値がエンキューされていますPythonイテレータからのキューの塗りつぶし
import tensorflow as tf
import numpy as np
# data
imgs = [np.random.randn(i,i) for i in [2,3,4,5]]
# iterate through data infinitly
def data_iterator():
while True:
for img in imgs:
yield img
it = data_iterator()
# create queue for data
q = tf.FIFOQueue(capacity=5, dtypes=[tf.float64])
# feed next element from iterator
enqueue_op = q.enqueue(list(next(it)))
# setup queue runner
numberOfThreads = 1
qr = tf.train.QueueRunner(q, [enqueue_op] * numberOfThreads)
tf.train.add_queue_runner(qr)
# dequeue
dequeue_op = q.dequeue()
dequeue_op = tf.Print(dequeue_op, data=[dequeue_op], message="dequeue()")
# We start the session as usual ...
with tf.Session() as sess:
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(coord=coord)
for i in range(10):
data = sess.run(dequeue_op)
print(data)
.
coord.request_stop()
coord.join(threads)
私は必ずしもfeed_dict
を使用する必要がありますか?はいの場合は、どのようにQueueRunnerと組み合わせて使用する必要がありますか?