Tensor Flowグラフを作成して、インクリメントする数値をキューに追加するにはどうすればよいですか?Tensorフローのエンキューとインクリメント変数
私は、学習目的のためにこれをやっているので、私はあなたが私がやっているものと同様のことを守れば好む(と私が間違ってやっている修正)と思います。
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()
出力::私はそれは2と8はその代わりに、それは常に、変数の現在の値をポップさとの間の2つの乱数であることを期待してい
8
8
これは私のコードです。
これは、変数の実際の値をプッシュするのではなく、代わりにポインタを変数にプッシュするためですか?テンソルフローのdocumentation氏は述べていますassign_add
戻り
添加が完了した後に、この変数の新しい値を保持しますテンソル。
繰り返しますが、私はテンソルの流れについて学ぶためにしようとしています。 TensorFlowのウェブサイト以外にも、学習リソースがあれば感謝しています。ありがとう。
EDIT:
が期待される行動のpush = queue.enqueue(add)
push = queue.enqueue(add + 0)
に結果を変更します。誰かがこれを説明できますか?
お使いのバージョンは?私はtf.11とtf 12rc1で試してみましたが、この動作を再現することはできません。あなたのコードを試してみると、デキューが異なる数字を生成しています。 –