【发布时间】:2016-11-18 03:06:14
【问题描述】:
如何让张量流图将递增的数字推送到队列中?
我只是为了学习目的而这样做,所以我希望你保持它与我正在做的事情相似(并纠正我做错的事情)。这是我的代码:
import tensorflow as tf
# create queue
queue = tf.RandomShuffleQueue(capacity=10, min_after_dequeue=1, dtypes=tf.float32)
# create variables, and "add" operation
push_var = tf.Variable(initial_value=1.0, trainable=False)
add = push_var.assign_add(1)
# enqueue operation
push = queue.enqueue(add)
# dequeue operation
pop = queue.dequeue()
sess = tf.InteractiveSession()
tf.initialize_all_variables().run()
# add var to stack
sess.run(push) # push_var = 2 after ran
sess.run(push) # push_var = 3 after ran
sess.run(push) # push_var = 4 after ran
sess.run(push) # push_var = 5 after ran
sess.run(push) # push_var = 6 after ran
sess.run(push) # push_var = 7 after ran
sess.run(push) # push_var = 8 after ran
# pop variable (random shuffle)
print sess.run(pop)
print sess.run(pop)
sess.close()
输出:
8
8
我希望它是 2 到 8 之间的 2 个随机数。相反,它总是弹出变量的当前值。
这是因为我不是推送变量的实际值而是推送一个指向变量的指针吗? Tensor Flow 的 documentation 表示 assign_add 返回
一个张量,它将在 添加已完成。
我再次尝试了解 Tensor Flow。如果您有任何学习资源(TensorFlow 网站除外),我将不胜感激!谢谢。
编辑:
将 push = queue.enqueue(add) 更改为 push = queue.enqueue(add + 0) 会导致预期的行为。有人可以解释一下吗?
【问题讨论】:
-
您使用的是哪个版本?我在 tf.11 和 tf 12rc1 中尝试过,但我无法重现这种行为,当我尝试你的代码时,我看到 dequeue 会产生不同的数字
标签: python tensorflow