TensorFlow函數(shù)教程:tf.io.PaddingFIFOQueue

2019-02-21 10:01 更新

tf.io.PaddingFIFOQueue函數(shù)

類 PaddingFIFOQueue

繼承自: QueueBase

別名:

  • 類 tf.PaddingFIFOQueue
  • 類 tf.io.PaddingFIFOQueue

定義在:tensorflow/python/ops/data_flow_ops.py。

FIFOQueue,支持通過填充批處理可變大小的張量。

PaddingFIFOQueue可能包含具有動態(tài)形狀的組件,同時也支持dequeue_many。

__init__

__init__(
    capacity,
    dtypes,
    shapes,
    names=None,
    shared_name=None,
    name='padding_fifo_queue'
)

創(chuàng)建一個隊列,以先進先出順序?qū)⒃爻隽小?/p>

具有有限容量的PaddingFIFOQueue;支持多個并發(fā)生產(chǎn)者和使用者;并提供準確的一次交付。

PaddingFIFOQueue包含最多capacity元素的列表。每個元素都是一個固定長度的張量元組,其dtypes由dtypes描述,其形狀由shapes參數(shù)描述。

所述shapes參數(shù)必須指定;queue元素的每個組件必須具有相應(yīng)的形狀。通過將任何shape維度設(shè)置為None,允許固定秩但可變維度的shape。在這種情況下,輸入的shape可能會沿著給定的維度變化,并且dequeue_many將使用零填充給定的維度,直到給定批處理中所有元素的最大shape。

參數(shù):

  • capacity:一個整數(shù)??梢源鎯υ诖岁犃兄械脑財?shù)量的上限。
  • dtypes:DType對象的列表。dtypes的長度必須等于每個隊列元素中的張量數(shù)。
  • shapes:TensorShape對象的列表,與dtypes具有相同長度。包含值None的TensorShape中的任何維度都是動態(tài)的,并允許值在該維度中以可變大小排列。
  • names:(可選)一個字符串列表,命名隊列中的組件,其長度與dtypes相同,或者為None。如果指定,則dequeue方法返回名稱為keys的字典。
  • shared_name:(可選)如果非空,則此隊列將在多個會話中以給定名稱共享。
  • name:隊列操作的可選名稱。

可能引發(fā)的異常:

  • ValueError:如果shapes不是shapes列表,或者dtypes和shapes的長度不匹配,或者指定了names且dtypes和names的長度不匹配。

屬性

dtypes

queue元素的每個組件的dtypes列表。

name

底層隊列的名稱。

names

queue元素的每個組件的names列表。

queue_ref

底層隊列引用。

shapes

queue元素的每個組件的shapes列表。

方法

close

close(
    cancel_pending_enqueues=False,
    name=None
)

關(guān)閉此隊列。

此操作表示在給定隊列中不再有元素排隊。隨后enqueue和enqueue_many 操作將失敗。如果隊列中仍有足夠的元素,則后續(xù)的dequeue和dequeue_many操作將繼續(xù)成功。隨后的dequeue和dequeue_many操作會阻止等待更多元素(如果沒有調(diào)用close)將立即失敗。

如果cancel_pending_enqueues是True,所有待處理的請求也將被取消。

參數(shù):

  • cancel_pending_enqueues:(可選)布爾值,默認為 False(如上所述)。
  • name:操作的名稱(可選)。

返回:

關(guān)閉隊列的操作。

dequeue

dequeue(name=None)

從此隊列中取消一個元素。

如果在執(zhí)行此操作時隊列為空,則它將阻塞,直到有一個要出隊的元素。

在運行時,如果隊列在執(zhí)行之前或期間是tf.QueueBase.close,則此操作可能會引發(fā)錯誤。如果隊列已關(guān)閉,則隊列為空,并且沒有可以滿足此請求的待處理入隊操作,將引發(fā)tf.errors.OutOfRangeError。如果會話是tf.Session.close,則會引發(fā)tf.errors.CancelledError。

參數(shù):

  • name:操作的名稱(可選)。

返回:

已經(jīng)出列的張量元組。

dequeue_many

dequeue_many(
    n,
    name=None
)



從此隊列中出列并連接n元素。

此操作沿第0維連接隊列元素組件張量,以生成單個組件張量。出列元組中的所有組件在第0維中的大小為n。

如果隊列已關(guān)閉且剩余的元素少于n,則會引發(fā) OutOfRange異常。

在運行時,如果隊列在執(zhí)行之前或期間是tf.QueueBase.close,則此操作可能會引發(fā)錯誤。如果隊列關(guān)閉,則隊列包含的元素少于n個,并且沒有可以滿足此請求的待處理入隊操作,將引發(fā)tf.errors.OutOfRangeError。如果會話是tf.Session.close,則會引發(fā)tf.errors.CancelledError。

參數(shù):

  • n:包含要出列的元素數(shù)量的標(biāo)量Tensor。
  • name:操作的名稱(可選)。

返回:

已出列的連接張量列表。

dequeue_up_to

dequeue_up_to(
    n,
    name=None
)

從此隊列中出列并連接n個元素。

注意所有隊列都不支持此操作。如果隊列不支持DequeueUpTo,則將引發(fā)tf.errors.UnimplementedError。

此操作沿第0維連接隊列元素組件張量,以生成單個組件張量。如果隊列尚未關(guān)閉,則出列元組中的所有組件將在第0維中具有大小n。

如果隊列已關(guān)閉并且剩余的元素數(shù)量多于0但少于n,則不會像tf.QueueBase.dequeue_many那樣引發(fā)tf.errors.OutOfRangeError,而是立即返回少于n個元素。如果隊列已關(guān)閉且隊列中剩余0個元素,則會引發(fā)tf.errors.OutOfRangeError,就像在dequeue_many中一樣。 否則行為與dequeue_many相同。

參數(shù):

  • n:包含要出列的元素數(shù)量的標(biāo)量Tensor。
  • name:操作的名稱(可選)。

返回:

已經(jīng)出列的連接張量的元組。

enqueue

enqueue(
    vals,
    name=None
)

將一個元素排入此隊列。

如果在執(zhí)行此操作時隊列已滿,則它將阻塞,直到該元素已入隊。

在運行時,如果隊列在執(zhí)行之前或期間是tf.QueueBase.close,則此操作可能會引發(fā)錯誤。如果在此操作運行之前關(guān)閉隊列,則將引發(fā)tf.errors.CancelledError。如果此操作被阻止,并且(i)通過cancel_pending_enqueues = True的關(guān)閉操作關(guān)閉隊列,或者(ii)會話為tf.Session.close,則將引發(fā)tf.errors.CancelledError。

參數(shù):

  • vals:張量,張量的列表或元組,或包含要入隊的值的字典。
  • name:操作的名稱(可選)。

返回:

將新元組的張量排入隊列的操作。

enqueue_many

enqueue_many(
    vals,
    name=None
)

將零個或多個元素排入此隊列。

此操作沿著第0維度切割每個組件張量以生成多個隊列元素。val中的所有張量在第0維中必須具有相同的大小。

如果在執(zhí)行此操作時隊列已滿,它將阻塞,直到所有元素都已入隊。

在運行時,如果隊列在執(zhí)行之前或期間是tf.QueueBase.close,則此操作可能會引發(fā)錯誤。如果在此操作運行之前關(guān)閉隊列,則將引發(fā)tf.errors.CancelledError。如果此操作被阻止,并且(i)通過cancel_pending_enqueues = True的關(guān)閉操作關(guān)閉隊列,或者(ii)會話為tf.Session.close,則將引發(fā)tf.errors.CancelledError。

參數(shù):

  • vals:張量,張量的列表或元組,或從中獲取隊列元素的字典。
  • name:操作的名稱(可選)。

返回:

將一批張量的元組排入隊列的操作。

from_list

from_list(
    index,
    queues
)

使用queues[index]中的隊列引用創(chuàng)建隊列。

參數(shù):

  • index:整數(shù)標(biāo)量張量,用于確定所選的輸入。
  • queues:QueueBase對象列表。

返回:

一個QueueBase對象。

可能引發(fā)的異常:

  • TypeError:當(dāng)queues不是QueueBase對象列表,或者queues的數(shù)據(jù)類型不完全相同。

is_closed

is_closed(name=None)

如果隊列關(guān)閉,則返回true。

如果隊列關(guān)閉,則此操作返回true,如果隊列打開,則返回false。

參數(shù):

  • name:操作的名稱(可選)。

返回:

如果隊列已關(guān)閉則為True,如果隊列已打開則為false。

size

size(name=None)

計算此隊列中的元素數(shù)。

參數(shù):

  • name:操作的名稱(可選)。

返回:

標(biāo)量張量,包含此隊列中的元素數(shù)。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號