tensorflow-隊列(3)
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 -*-
"""
Created on Thu Sep 6 10:16:37 2018
@author: myhaspl
"""
import tensorflow as tf
n = 100
xQueue=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=0
print
for i in range(xLen):
myx=sess.run(xQueue.dequeue())
print myx,
mySum+=myx
print
print mySum
0 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 -*-
"""
Created on Thu Sep 6 10:16:37 2018
@author: myhaspl
"""
import tensorflow as tf
with 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 -*-
"""
Created on Thu Sep 6 10:16:37 2018
@author: [email protected]
"""
import tensorflow as tf
n = 100
xQueue=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-隊列(3)