当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。