TensorFlow隊(duì)列函數(shù):tf.QueueBase

2018-11-21 11:40 更新
tf.QueueBase 函數(shù)

QueueBase 類

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

請(qǐng)參閱指南:輸入和讀取器>隊(duì)列

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

一個(gè)隊(duì)列是一個(gè) TensorFlow 數(shù)據(jù)結(jié)構(gòu),它存儲(chǔ)了跨越多個(gè)步驟的張量,并公開了對(duì)張量進(jìn)行入隊(duì)和出隊(duì)的操作.

每個(gè)隊(duì)列元素是一個(gè)或多個(gè)張量的元組,其中每個(gè)元組元素具有靜態(tài) dtype,并且可以具有靜態(tài)形狀.隊(duì)列實(shí)現(xiàn)支持處理單個(gè)元素的 enqueue 和 dequeue版本,同時(shí)支持入隊(duì)和出隊(duì)一批元素的版本.

見 tf.FIFOQueue 和 tf.RandomShuffleQueue 了解該類的具體實(shí)現(xiàn)以及關(guān)于如何創(chuàng)建這個(gè)類的說(shuō)明.

屬性

  • dtypes
    隊(duì)列元素的每個(gè)組件的 dtypes 列表.
  • name
    底層隊(duì)列的名稱.
  • names
    隊(duì)列元素的每個(gè)組件的名稱列表.
  • queue_ref
    底層的隊(duì)列引用.
  • shapes
    隊(duì)列元素的每個(gè)組件的形狀列表.

方法

__init__

__init__(
    dtypes,
    shapes,
    names,
    queue_ref
)

從隊(duì)列引用構(gòu)造一個(gè)隊(duì)列對(duì)象.

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

參數(shù):

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

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

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

close

close(
    cancel_pending_enqueues=False,
    name=None
)

關(guān)閉這個(gè)隊(duì)列.

這個(gè)操作表明沒有更多的元素將被排入隊(duì)列.后續(xù) enqueue 和 enqueue_many 操作將失敗.如果足夠的元素保留在隊(duì)列中,后續(xù) dequeue 和 dequeue_many 操作將繼續(xù)成功.隨后 dequeue 和 dequeue_many 操作將立即失敗,否則會(huì)阻止等待更多的元素(如果關(guān)閉沒有被調(diào)用).

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

參數(shù):

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

返回:

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

dequeue

dequeue(name=None)

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

如果執(zhí)行此操作時(shí)隊(duì)列為空,則會(huì)阻塞隊(duì)列,直到出現(xiàn)一個(gè)元素.

在運(yùn)行時(shí),如果隊(duì)列 tf.QueueBase.close 在執(zhí)行之前或執(zhí)行期間,此操作可能會(huì)引發(fā)錯(cuò)誤.如果隊(duì)列關(guān)閉,則隊(duì)列為空,并且沒有未完成的隊(duì)列操作可以完成這個(gè)請(qǐng)求,tf.errors.OutOfRangeError 將會(huì)被觸發(fā).如果會(huì)話是 tf.Session.close,則 tf.errors.CancelledError 將被提出.

參數(shù):

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

返回:

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

dequeue_many

dequeue_many(
    n,
    name=None
)

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

該操作將隊(duì)列元素的分量張量沿第0維連接起來(lái),從而構(gòu)成一個(gè)單一的分量.取消元組中的所有組件都將在第0維度中具有 n 個(gè)大小.

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

在運(yùn)行時(shí),如果隊(duì)列 tf.QueueBase.close 在執(zhí)行之前或執(zhí)行期間,此操作可能會(huì)引發(fā)錯(cuò)誤.如果隊(duì)列關(guān)閉,則隊(duì)列中包含的元素少于 n 元素,并且沒有可以執(zhí)行此請(qǐng)求的未決隊(duì)列操作 tf.errors.OutOfRangeError 將被引發(fā).如果會(huì)話是 tf.Session.close,則 tf.errors.CancelledError 將被提出.

參數(shù):

  • n:包含要入隊(duì)的元素?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.

該操作將隊(duì)列元素的分量張量沿第0維連接起來(lái),從而構(gòu)成一個(gè)單一的分量.如果隊(duì)列尚未關(guān)閉,則取消元組中的所有組件都將在第0維度中具有 n 個(gè)大小.

如果隊(duì)列被關(guān)閉,并且剩余的元素多于 0 但少于 n 個(gè)元素,那么不是像 tf.QueueBase.dequeue_many 元素一樣引發(fā) tf.errors.OutOfRangeError ,而是 n 個(gè)元素立即返回.如果隊(duì)列被關(guān)閉,并且隊(duì)列中有 0 元素,則會(huì)像在 dequeue_many 中一樣引發(fā) tf.errors.OutOfRangeError.否則,該行為與 dequeue_many 相同.

參數(shù):

  • n:包含要排隊(duì)的元素?cái)?shù)量的標(biāo)量 Tensor.
  • name:操作的名稱(可選).

返回:

取消的串聯(lián)張量的元組.

enqueue

enqueue(
    vals,
    name=None
)

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

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

在運(yùn)行時(shí),如果隊(duì)列 tf.QueueBase.close 在執(zhí)行之前或執(zhí)行期間,此操作可能會(huì)引發(fā)錯(cuò)誤.如果在該操作運(yùn)行之前隊(duì)列被關(guān)閉,tf.errors.CancelledError 將會(huì)被引發(fā).如果此操作被阻止,并且 有這兩種情況:(a) 隊(duì)列由關(guān)閉操作關(guān)閉,cancel_pending_enqueues=True,或(b)所述會(huì)話是 tf.Session.close,則 tf.errors.CancelledError 將提高.

參數(shù):

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

返回:

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

enqueue_many

enqueue_many(
    vals,
    name=None
)

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

此操作將每個(gè)組件張量沿第0維度切片,以創(chuàng)建多個(gè)隊(duì)列元素.vals 中的所有張量必須在第0維度中具有相同的大小.

如果執(zhí)行此操作時(shí)隊(duì)列已滿,則它將阻塞,直到所有元素均已排隊(duì).

在運(yùn)行時(shí),如果隊(duì)列 tf.QueueBase.close 在執(zhí)行之前或執(zhí)行期間,此操作可能會(huì)引發(fā)錯(cuò)誤.如果在該操作運(yùn)行之前隊(duì)列被關(guān)閉,將引發(fā) tf.errors.CancelledError.如果此操作被阻止,并且會(huì)有兩種情況:要么(a)所述隊(duì)列由與關(guān)閉操作關(guān)閉cancel_pending_enqueues=True,或(b)所述會(huì)話是 tf.Session.close,則 tf.errors.CancelledError 將提高.

參數(shù):

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

返回:

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

from_list

@staticmethod
from_list(
    index,
    queues
)

從 queues[index] 使用隊(duì)列引用創(chuàng)建一個(gè)隊(duì)列.

參數(shù):

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

返回:

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

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

  • TypeError:什么時(shí)候 queues 不是 QueueBase 對(duì)象列表,或者什么時(shí)候 queues 的數(shù)據(jù)類型不一樣.

is_closed

is_closed(name=None)

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

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

參數(shù):

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

返回:

如果隊(duì)列已關(guān)閉,則為 true;如果隊(duì)列已打開,則為 false.

size

size(name=None)

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

參數(shù):

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

返回:

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

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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)