Tensorflow中隊列的使用

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 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.隊列長度等於最大值,執行入隊操作




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章