1. 程式人生 > >tensorflow-隊列(3)

tensorflow-隊列(3)

pre 數量 大小 eba scalar 通過 usr base 執行

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整除的數之和

tensorflow-隊列(3)