tensorflow-佇列(3)
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 -*-
"""
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整除的數之和