當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python tf.raw_ops.BatchFunction用法及代碼示例


將所有輸入張量批處理到函數完成的計算中。

用法

tf.raw_ops.BatchFunction(
    in_tensors, captured_tensors, f, num_batch_threads, max_batch_size,
    batch_timeout_micros, Tout, max_enqueued_batches=10, allowed_batch_sizes=[],
    container='', shared_name='', batching_queue='',
    enable_large_batch_splitting=False, name=None
)

參數

  • in_tensors Tensor 對象的列表。要批處理的張量。
  • captured_tensors Tensor 對象的列表。在函數中捕獲的張量,不需要批處理。
  • f 用@Defun 裝飾的函數。
  • num_batch_threads 一個 int 。用於處理批量工作的調度線程數。確定並行處理的批次數。
  • max_batch_size 一個 int 。批量大小永遠不會大於此。
  • batch_timeout_micros 一個 int 。在輸出不完整批次之前等待的最大微秒數。
  • Tout 長度為 >= 1tf.DTypes 列表。輸出張量的類型。
  • max_enqueued_batches 可選的 int 。默認為 10 。排隊的最大批次數。默認值:10。
  • allowed_batch_sizes ints 的可選列表。默認為 [] 。允許的批量大小的可選列表。如果留空,則不執行任何操作。否則,提供批量大小列表,導致操作將批量填充到其中一個大小。條目必須單調增加。如果enable_large_batch_splitting 為假(即未啟用large-input-split),則最終條目必須等於max_batch_size。
  • container 可選的 string 。默認為 "" 。控製此批次的共享範圍。
  • shared_name 可選的 string 。默認為 "" 。在具有相同容器和shared_name 的同一設備中同時運行批處理實例會將它們的元素批處理在一起。如果留空,則操作名稱將用作共享名稱。
  • batching_queue 可選的 string 。默認為 ""
  • enable_large_batch_splitting 可選的 bool 。默認為 False 。大尺寸的輸入(即大於 allowed_batch_sizes 的最大值)將被分成多個批次大小的批次。
  • name 操作的名稱(可選)。

返回

  • 類型為 ToutTensor 對象的列表。

因此,例如,在以下代碼中

# This input will be captured.
  y = tf.placeholder_with_default(1.0, shape=[])

  @tf.Defun(tf.float32)
  def computation(a):
    return tf.matmul(a, a) + y

  b = gen_batch_ops.batch_function(
          f=computation
          in_tensors=[a],
          captured_tensors=computation.captured_inputs,
          Tout=[o.type for o in computation.definition.signature.output_arg],
          num_batch_threads=1,
          max_batch_size=10,
          batch_timeout_micros=100000,  # 100ms
          allowed_batch_sizes=[3, 10],
          batching_queue="")

如果多個 session.run 調用同時嘗試計算 b,則將收集 a 的值,沿第一個軸不確定地連接,並且隻有一個線程將運行計算。

假設函數的所有參數都是張量,它們將沿著它們的第一維進行批處理。

捕獲的參數不會被批處理。執行連接的 session.run 調用將使用捕獲的可用張量的值。因此,捕獲的張量的典型用途應該涉及在 session.run 調用中保持不變的值。推理就是一個很好的例子。

不支持稀疏張量。裝飾函數的返回值必須是張量或張量的列表/元組。

相關用法


注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.raw_ops.BatchFunction。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。