TensorFlow隊列函數:tf.QueueBase

2018-11-21 11:40 更新
tf.QueueBase 函數

QueueBase 類

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

請參閱指南:輸入和讀取器>隊列

隊列實現的基類.

一個隊列是一個 TensorFlow 數據結構,它存儲了跨越多個步驟的張量,并公開了對張量進行入隊和出隊的操作.

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

見 tf.FIFOQueue 和 tf.RandomShuffleQueue 了解該類的具體實現以及關于如何創(chuàng)建這個類的說明.

屬性

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

方法

__init__

__init__(
    dtypes,
    shapes,
    names,
    queue_ref
)

從隊列引用構造一個隊列對象.

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

參數:

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

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

  • ValueError:如果其中一個參數是無效的.

close

close(
    cancel_pending_enqueues=False,
    name=None
)

關閉這個隊列.

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

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

參數:

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

返回:

關閉隊列的操作.

dequeue

dequeue(name=None)

從此隊列中取出一個元素.

如果執(zhí)行此操作時隊列為空,則會阻塞隊列,直到出現一個元素.

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

參數:

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

返回:

已經出列的張量元組.

dequeue_many

dequeue_many(
    n,
    name=None
)

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

該操作將隊列元素的分量張量沿第0維連接起來,從而構成一個單一的分量.取消元組中的所有組件都將在第0維度中具有 n 個大小.

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

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

參數:

  • n:包含要入隊的元素數量的標量 Tensor.
  • name:操作的名稱(可選).

返回:

被出列的連接的張量的元組.

dequeue_up_to

dequeue_up_to(
    n,
    name=None
)

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

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

該操作將隊列元素的分量張量沿第0維連接起來,從而構成一個單一的分量.如果隊列尚未關閉,則取消元組中的所有組件都將在第0維度中具有 n 個大小.

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

參數:

  • n:包含要排隊的元素數量的標量 Tensor.
  • name:操作的名稱(可選).

返回:

取消的串聯張量的元組.

enqueue

enqueue(
    vals,
    name=None
)

將一個元素排入此隊列.

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

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

參數:

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

返回:

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

enqueue_many

enqueue_many(
    vals,
    name=None
)

將零個或多個元素列入此隊列.

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

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

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

參數:

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

返回:

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

from_list

@staticmethod
from_list(
    index,
    queues
)

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

參數:

  • index:一個整數標量張量,用于確定所選的輸入.
  • queues:QueueBase 對象列表.

返回:

一個 QueueBase 對象.

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

  • TypeError:什么時候 queues 不是 QueueBase 對象列表,或者什么時候 queues 的數據類型不一樣.

is_closed

is_closed(name=None)

如果隊列關閉,則返回 true.

如果隊列已關閉,則此操作返回 true,如果隊列已打開,則返回 false.

參數:

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

返回:

如果隊列已關閉,則為 true;如果隊列已打開,則為 false.

size

size(name=None)

計算此隊列中的元素數量.

參數:

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

返回:

包含此隊列中元素數量的標量張量.

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號