tensorflow随笔-队列(1)
tf.FIFOQueue
Class FIFOQueue
先進先出的隊列
屬性
dtypes
隊列元素的每個組件的dtypes列表
name
隊列名字
基礎隊列的名稱。
names
隊列元素的每個組件的名字列表
queue_ref
基礎隊列引用
shapes
隊列元素的每個組件的尺寸列表
Methods
init
init(
capacity,
dtypes,
shapes=None,
names=None,
shared_name=None,
name=‘fifo_queue’
)
創建一個先進先出的隊列。
一個FIFOQueue具有有限的容量;支持多個并發生產者和消費者;并且提供恰好一次傳遞。
一個FIFOQueue持有一個至多容量元素的列表。每個元素是一個固定長度的張量元組,其dtype由dtypes描述,其形狀可選地由shapes參數描述。
如果指定了shapes參數,則隊列元素的每個組件必須具有各自的固定形狀。如果未指定,則不同的隊列元素可能具有不同的形狀,但是不允許使用dequeue_many。
參數:
capacity: 整數??纱鎯υ谠撽犃兄械脑財盗康纳舷?。
dtypes: 一個dType對象的列表。dtypes的長度必須等于每個隊列元素中張量的數量。
shapes: (可選) 一個完全定義的TensorShape對象的列表,其長度與dtypes相同,或者None。A
names: (Optional.) 可選的)一個字符串列表,命名為與dtypes相同的隊列中的組件,或者None。如果指定了dequeue E方法,返回一個字典,名稱為鍵。
shared_name: (Optional.)(可選)。如果非空,這個隊列將在給定的名稱下在多個會話中共享。
name: 隊列操作的可選名稱。
close
close(
cancel_pending_enqueues=False,
name=None
)
關閉先進先出隊列
此操作指示在給定隊列中不再有元素入隊(enqueue)。隨后的enqueue隊列和enqueue_many將失敗,如果隊列中有足夠的元素,則后續的dequeue(出隊)和dequeue_many操作將繼續成功。隨后,如果dequeue和dequeue_many操作阻塞等待更多元素(如果close沒有被調用)將立即失敗。
如果cancel_pending_enqueues是True,所有未決請求也將被取消。
參數:
cancel_pending_enqueues: (可選) 一個boolean,默認為False
name: 操作的名字(可選)
返回:
關閉隊列的操作
dequeue
dequeue(name=None)
從隊列中出列一個元素。
如果隊列在執行此操作時是空的,它將阻塞直到有一個元素出列。
在運行時,如果隊列在執行之前或執行過程中的隊列是.tf.QuealBase.close,則此操作可能會引發錯誤。如果隊列被關閉,隊列是空的,并且沒有可以滿足此請求的掛起隊列操作,會觸發tf.Error。如果會話是tf.Session.close,tf.errors.CancelledError 將觸發。
參數:
name: 操作名(可選)
返回:
出列的張量的元組
dequeue_many
dequeue_many(
n,
name=None
)
將隊列中的n個元素出列并連接起來。
此操作將隊列元素組件張量沿著零維度連接成單個組件張量。在零個維度中,出列元組中的所有組件的大小都為n。如果隊列被關閉,并且還有小于n個元素,則引發一個OutOfRange異常。
在運行時,如果隊列是tf.QueueBase.close。在執行之前或執行期間關閉,則此操作可能會引發錯誤。如果隊列關閉,則隊列包含少于n個元素,并且沒有可以滿足此請求的掛起的入列操作,即tf.error.OutOfRangeErrouqr。如果這個隊列是tf.Session.close, tf.errors.CancelledError將被拋出。
參數:
n: 一個scalar Tensor,包括入列元素的數目
name: 操作的名字(可選)
返回:
tensors拼接生成的列表,這些列表將出列
enqueue
enqueue(
vals,
name=None
)
在隊列里入列一個元素
當操作執行時,如果這個隊列是滿的則它將阻止,直到元素已被入隊。
在運行時,如果隊列在執行之前或執行過程中的隊列是tf.QueueBase.close,則此操作可能會引發錯誤tf.errors.CancelledError。如果該操作被阻塞,并且要么(i)隊列通過具有cancel_pending_enque.=True的閉合操作關閉,要么(ii)會話為tf.Session.close、f.errors.CancelledError將被觸發。
參數:
vals:一個tensor,tensors的元組列表 ,或包含入隊值的字典。
name: 操作名字(可選)
返回:
將張量的新元組入列到隊列的操作。
enqueue_many
enqueue_many(
vals,
name=None
)
將零或多個元素入隊到此隊列
該操作將每個分量張量沿零維切片,以形成多個隊列元素。在零維中,所有在vals中的張量必須具有相同的大小。
如果此操作執行時隊列已滿,則它將阻塞,直到所有元素都已入隊。
在運行時,如果隊列在執行之前或執行過程中的隊列是tf.QueueBase.close,如果在運行之前關閉該隊列,則將引發tf.errors.CancelledError。如果該操作被阻塞,并且要么(i)隊列通過具有cancel_pending_enqueues=True的閉合操作關閉,要么(ii)會話為tf.Session.close、tf.errors.CancelledError將被引發。
參數:
vals: 一個tensor,tensors元組的列表,或一個字典 從中獲取隊列元素的字典
name: A name for the operation (optional).
返回:
將張量的一批元組排到隊列中的操作。
from_list
from_list(
index,
queues
)
從queues[index]中使用隊列引用創建隊列
參數:
index: 一個整數標量,決定輸入選擇范圍
queues: 一個QueueBase對象列表
返回:
一個QueueBase對象
拋出:
TypeError: 當queues不是queues對象的列表,或當queues數據類型并非都相同。
is_closed
is_closed(name=None)
如果隊列關閉,返回true。
如果隊列是關閉的,此操作返回true;如果隊列是打開的,則返回false。
參數:
name: 操作名稱(可選)
返回:
如果隊列是關閉的,此操作返回true;如果隊列是打開的,則返回false。
size
size(name=None)
計算隊列元素數量
參數:
name: 操作名(可選)
返回:
標量張量,包括隊列元素數量
dequeue_up_to
dequeue_up_to(
n,
name=None
)
從隊列中出列并拼接n個元素。
注:此操作不受所有隊列的支持。如果隊列不支持DequeueUpTo,則引發一個tf.errors.UnimplementedError。
此操作將隊列元素組件張量沿著零維連接成單個組件張量。如果隊列尚未關閉,則在零維度中,隊列中的元組中的所有組件都將具有大小N。
如果隊列關閉,并且剩余的元素多于0但少于n個,則立即返回少于n個的元素,而不是引發tf.error.OutOfRangeError,像tf.QueueBase.dequeue_many。如果隊列關閉,并且隊列中剩余的元素為0,tf.errors.OutOfRangeError將被拋出,就像就像dequeue_many中一樣。否則行為與dequeue_many一樣。
參數:
n: 一個標量Tensor,包含出列元素的數目。
name: A name for the operation (optional).
返回:
拼接出列tensors的元組,
#!/usr/bin/env python2 # -*- coding: utf-8 -*-import tensorflow as tfn = 100xQueue=tf.FIFOQueue(100,tf.int32)with tf.Session() as sess:for i in xrange(n):if i%3==0:sess.run(xQueue.enqueue(i))xLen=sess.run(xQueue.size())mySum=0printfor i in range(xLen):myx=sess.run(xQueue.dequeue())print myx,mySum+=myxprint print mySum0 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 84 87 90 93 96 99
1683
求被3整除的100以內數之和
下面列出1-4的數字
#!/usr/bin/env python2 # -*- coding: utf-8 -*-import tensorflow as tfwith tf.Session() as sess:queue = tf.FIFOQueue(100, dtypes=[tf.int32], shapes=[()])enqueue_op = queue.enqueue_many([[1, 2,3,4]])inputs = queue.dequeue_many(4)sess.run(enqueue_op)sess.run(enqueue_op)print sess.run(inputs)[1 2 3 4]
#!/usr/bin/env python2 # -*- coding: utf-8 -*-import tensorflow as tfn = 100xQueue=tf.FIFOQueue(100,dtypes=[tf.int32],shapes=[])with tf.Session() as sess:for i in xrange(n):if i%3==0:sess.run(xQueue.enqueue(i))xLen=sess.run(xQueue.size())myx=sess.run(xQueue.dequeue_many(xLen))print myx print sum(myx)[ 0 3 6 … 93 96 99]
1683
上面求100以內被3整除的數之和
總結
以上是生活随笔為你收集整理的tensorflow随笔-队列(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 数据库操作类_【数据库操作类
- 下一篇: win10计算机系统优化设置,win1