tf.train.batch

tf.train.batch(
    tensors,
    batch_size,
    num_threads=1,
    capacity=32,
    enqueue_many=False,
    shapes=None,
    dynamic_pad=False,
    allow_smaller_final_batch=False,
    shared_name=None,
    name=None
)

在张量中创建多个张量。参数张量可以是张量的列表或字典。函数返回的值与张量的类型相同。这个函数是使用队列实现的。队列的QueueRunner被添加到当前图的QUEUE_RUNNER集合中。 如果enqueue_many为False,则假定张量表示单个示例。一个形状为[x, y, z]的输入张量将作为一个形状为[batch_size, x, y, z]的张量输出。如果enqueue_many为真,则假定张量表示一批实例,其中第一个维度由实例索引,并且张量的所有成员在第一个维度中的大小应该相同。如果一个输入张量是shape [*, x, y, z],那么输出就是shape [batch_size, x, y, z]。容量参数控制允许预取多长时间来增长队列。返回的操作是一个dequeue操作,将抛出tf.errors。如果输入队列已耗尽,则OutOfRangeError。如果该操作正在提供另一个输入队列,则其队列运行器将捕获此异常,但是,如果在主线程中使用该操作,则由您自己负责捕获此异常。

注意:  如果dynamic_pad为False,则必须确保(i)传递了shapes参数,或者(ii)张量中的所有张量必须具有完全定义的形状。如果这两个条件都不成立,将会引发ValueError。如果dynamic_pad为真,则只要知道张量的秩就足够了,但是单个维度可能没有形状。在这种情况下,对于每个加入值为None的维度,其长度可以是可变的;在退出队列时,输出张量将填充到当前minibatch中张量的最大形状。对于数字,这个填充值为0。对于字符串,这个填充是空字符串。如果allow_smaller_final_batch为真,那么当队列关闭且没有足够的元素来填充该批处理时,将返回比batch_size更小的批处理值,否则将丢弃挂起的元素。此外,通过shape属性访问的所有输出张量的静态形状的第一个维度值为None,依赖于固定batch_size的操作将失败。

参数:

  • tensors:  要排队的张量列表或字典。
  • batch_size:  从队列中提取的新批大小。
  • num_threads:  进入张量队列的线程数。如果num_threads >为1,则批处理将是不确定的。
  • capacity:  一个整数。队列中元素的最大数量。
  • enqueue_many:  张量中的每个张量是否是一个单独的例子。
  • shape:  (可选)每个示例的形状。默认为张量的推断形状。
  • dynamic_pad:  布尔。允许在输入形状中使用可变尺寸。在脱队列时填充给定的维度,以便批处理中的张量具有相同的形状。
  • allow_smaller_final_batch:  (可选)布尔。如果为真,如果队列中没有足够的项,则允许最后的批处理更小。 
  • shared_name:  (可选)。如果设置了,此队列将在多个会话中以给定的名称共享。 
  • name:  (可选)操作的名称。 

返回值:

  • 与张量类型相同的张量列表或字典(除非输入是一个由一个元素组成的列表,否则它返回一个张量,而不是一个列表)。

异常值:

  • ValueError: If the shapes are not specified, and cannot be inferred from the elements of tensors.

Eager Compatibility

    启用即时执行时,不支持基于队列的输入管道。请使用tf。数据API,用于在紧急执行下摄取数据。

原链接:  https://tensorflow.google.cn/versions/r1.8/api_docs/python/tf/train/batch?hl=en

猜你喜欢

转载自blog.csdn.net/weixin_36670529/article/details/91554250