在TensorFlow教程“Threading_and Queues”中有一个使用队列的例子(开头的动画gif(见https://github.com/etetoolkit/ete/issues/244)。
我在我的计算机上尝试了这个示例,它的工作方式并不像预期的那样:
import tensorflow as tf
q = tf.FIFOQueue(3, tf.float32)
sess = tf.InteractiveSession()
q_size = q.size()
init = q.enqueue_many(([0.,0.,0.],))
# for getting the number of elements in the queue
q_size.eval()
0
# enqueue three elements into the queue
init.run()
q_size.eval()
3
x = q.dequeue()
y = x + 1
q_inc = q.enqueue([y])
q_inc.run()
y.eval()
1
q_size.eval()
2
q_inc.run()
y.eval()
2
q_size.eval()
1
q_inc.run()
y.eval()
3
q_size.eval()
0
所以队列是空的:-(
每次运行q_inc都会缩短队列。 y
没有加入队列。为什么呢?
答案 0 :(得分:1)
每个队列都会出两次队列。
y
触发x
,触发从队列中出列的y.eval()
x
触发{{1}},它也从队列