版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/zSean/article/details/76422768
在tensorflow中隊列和變量都是用於計算圖上有狀態的節點;
以下爲FIFOQueue隊列,是一個先進先出隊列
import tensorflow as tf
q = tf.FIFOQueue(3,"int32") #創建一個先進先出的隊列
init = q.enqueue_many(([2,5,3],)) #通過enqueue_many()函數初始化隊列中的元素
x = q.dequeue() #通過dequeue()函數將隊列中的第一個元素送出隊列,並將這個元素的值存在變量x中
y = x+1
q_inc = q.enqueue([y]) #將更新後的元素值重新加入隊列中
with tf.Session() as sess:
sess.run(init)
quelen = sess.run(q.size())
for i in range(3): #執行q_inc的次數3,
sess.run(q_inc)
quelen = sess.run(q.size())
for i in range(quelen):
print(sess.run(q.dequeue()))
結果爲:3 6 4
而RandomShuffleQueue函數爲隨機隊列,是以隨機的順序產生元素的;
import tensorflow as tf
q = tf.RandomShuffleQueue(capacity=10,min_after_dequeue=2, dtypes="float") #隊列最大長度爲10,出隊後最小長度爲2;
sess = tf.Session()
for i in range(0,10): #10次入隊操作
sess.run(q.enqueue(i))
for i in range(0,8): #8次出隊操作
print(sess.run(q.dequeue()))
結果爲隨機:本次爲:
0.0
3.0
4.0
9.0
6.0
5.0
2.0
7.0
但是在以下兩種情況中會出現阻斷:1.隊列長度等於最小值,執行出隊操作
2.隊列長度等於最大值,執行入隊操作