TensorFlow函數(shù)教程:tf.queue.QueueBase

2019-02-22 14:38 更新

tf.queue.QueueBase函數(shù)

類 QueueBase

別名:

  • 類 tf.QueueBase
  • 類 tf.io.QueueBase

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

隊(duì)列實(shí)現(xiàn)的基類。

隊(duì)列是TensorFlow數(shù)據(jù)結(jié)構(gòu),它跨多個(gè)步驟存儲(chǔ)張量,并公開(kāi)使張量排隊(duì)和出列的操作。

每個(gè)隊(duì)列元素是一個(gè)或多個(gè)張量的元組,其中每個(gè)元組組件具有靜態(tài)dtype,并且可以具有靜態(tài)shape。隊(duì)列實(shí)現(xiàn)支持處理單個(gè)元素的enqueue和dequeue版本,這些版本支持一次對(duì)一批元素進(jìn)行入隊(duì)和出列。

__init__

__init__(
    dtypes,
    shapes,
    names,
    queue_ref
)

從隊(duì)列引用構(gòu)造隊(duì)列對(duì)象。

如果提供,兩個(gè)可選列表,shapes和names必須與dtypes具有相同的長(zhǎng)度相同。給定索引處的值i指示用于dtypes中相應(yīng)隊(duì)列組件的shape和名稱。

參數(shù):

  • dtypes:類型列表。dtypes的長(zhǎng)度必須等于每個(gè)元素中的張量數(shù)。
  • shapes:元素中張量shape的約束:shape元組列表或?yàn)镹one。此列表與dtypes的長(zhǎng)度相同。如果元素中任何張量的shape受到約束,則所有都必須是;如果shape不應(yīng)受約束,則shape可以為None。
  • names:可選的名稱列表。如果提供,則enqueue()和dequeue()方法將使用具有這些名稱的字典作為鍵。必須為None或者與dtypes的長(zhǎng)度相同的列表或元組。
  • queue_ref:隊(duì)列引用,即隊(duì)列操作的輸出。

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

  • ValueError:如果其中一個(gè)參數(shù)無(wú)效。

屬性

dtypes

隊(duì)列元素的每個(gè)組件的dtypes列表。

name

基礎(chǔ)隊(duì)列的名稱。

names

隊(duì)列元素的每個(gè)組件的names列表。

queue_ref

基礎(chǔ)隊(duì)列引用。

shapes

隊(duì)列元素的每個(gè)組件的shapes列表。

方法

close

close(
    cancel_pending_enqueues=False,
    name=None
)

關(guān)閉此隊(duì)列。

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

如果cancel_pending_enqueues是True,則所有待處理的請(qǐng)求也將被取消。

參數(shù):

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

返回:

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

dequeue

dequeue(name=None)

從此隊(duì)列中取消一個(gè)元素。

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

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

參數(shù):

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

返回:

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

dequeue_many

dequeue_many(
    n,
    name=None
)

從此隊(duì)列中取出并連接n個(gè)元素。

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

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

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

參數(shù):

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

返回:

已出列的連接張量列表。

dequeue_up_to

dequeue_up_to(
    n,
    name=None
)

從此隊(duì)列中取出并連接n個(gè)元素。

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

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

如果隊(duì)列已關(guān)閉并且剩余的元素?cái)?shù)超過(guò)0但少于n個(gè),則不會(huì)像tf.QueueBase.dequeue_many那樣引發(fā)tf.errors.OutOfRangeError,而是立即返回少于n個(gè)元素。 如果隊(duì)列已關(guān)閉且隊(duì)列中剩余0個(gè)元素,則會(huì)引發(fā)tf.errors.OutOfRangeError,就像在dequeue_many中一樣。否則行為與dequeue_many相同。

參數(shù):

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

返回:

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

enqueue

enqueue(
    vals,
    name=None
)

將一個(gè)元素排入此隊(duì)列。

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

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

參數(shù):

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

返回:

將新元組的張量排入隊(duì)列的操作。

enqueue_many

enqueue_many(
    vals,
    name=None
)

將零個(gè)或多個(gè)元素排入此隊(duì)列。

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

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

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

參數(shù):

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

返回:

將一批張量的元組排入隊(duì)列的操作。

from_list

@staticmethod
from_list(
    index,
    queues
)

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

參數(shù):

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

返回:

一個(gè)QueueBase對(duì)象。

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

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

is_closed

is_closed(name=None)

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

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

參數(shù):

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

返回:

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

size

size(name=None)

計(jì)算此隊(duì)列中的元素?cái)?shù)。

參數(shù):

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

返回:

標(biāo)量張量,包含此隊(duì)列中的元素?cái)?shù)。


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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)