前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >tf.queue

tf.queue

作者头像
狼啸风云
修改2022-09-03 22:04:12
1.4K0
修改2022-09-03 22:04:12
举报
文章被收录于专栏:计算机视觉理论及其实现

一、概述

tf的公共API。队列的名称空间。

  • FIFOQueue:按先入先出顺序对元素进行排队的队列实现。
  • PaddingFIFOQueue:一个FIFOQueue支持通过填充来批量处理可变大小的张量。
  • PriorityQueue:按优先级顺序对元素进行排队的队列实现。
  • QueueBase:队列实现的基类。
  • RandomShuffleQueue:按随机顺序对元素进行排队的队列实现。

二、tf.queue.FIFOQueue

按先入先出顺序对元素进行排队的队列实现。继承自:QueueBase

别名:

  • tf.compat.v1.FIFOQueue
  • tf.compat.v1.queue.FIFOQueue
  • tf.compat.v2.queue.FIFOQueue

看到tf.queue。QueueBase获取该类上方法的描述。

1、__init__

代码语言:javascript
复制
__init__(
    capacity,
    dtypes,
    shapes=None,
    names=None,
    shared_name=None,
    name='fifo_queue'
)

创建一个队列,该队列以先入先出的顺序将元素从队列中取出。FIFOQueue具有有限的容量;支持多个并发的生产者和消费者;并提供准确的一次交货。FIFOQueue包含一个包含最多容量元素的列表。每个元素都是一个定长张量元组,张量的d类型由d类型描述,其形状由shapes参数可选地描述。如果指定了shapes参数,则队列元素的每个组件必须具有各自的固定形状。如果未指定,则不同的队列元素可能具有不同的形状,但是不允许使用dequeue_many。

参数:

  • capacity:一个整数。可能存储在此队列中的元素数量的上限。
  • dtypes: DType对象的列表。类型的长度必须等于每个队列元素中张量的数量。
  • shapes:(可选)具有与dtypes相同长度或没有长度的完全定义的TensorShape对象的列表。
  • names:(可选)。指定队列中与dtypes相同或没有相同长度的组件的字符串列表。如果指定了dequeue方法,则返回一个名称为键的字典。
  • shared_name:(可选)。如果非空,则此队列将在多个会话之间以给定名称共享。
  • name:队列操作的可选名称。

2、属性

dtypes

  • 队列元素的每个组件的dtypes列表。

name

  • 底层队列的名称。

name

  • 队列元素的每个组件的名称列表。

queue_ref

  • 底层队列引用。

shapes

  • 队列元素的每个组件的形状列表。

3、close

代码语言:javascript
复制
close(
    cancel_pending_enqueues=False,
    name=None
)

关闭此队列。这个操作表明,在给定队列中不再有元素进入队列。后续的enqueue和enqueue_many操作将失败。如果队列中保留足够的元素,后续的dequeue和dequeue_many操作将继续成功。随后dequeue和dequeue_许多本来会阻塞等待更多元素的操作(如果没有调用close)现在将立即失败。如果cancel_pending_enqueues为真,所有挂起的请求也将被取消。

参数:

  • cancel_pending_enqueues:(可选)。一个布尔值,默认为False(如上所述)。
  • name:操作的名称(可选)。

返回值:

  • 关闭队列的操作。

4、dequeue

代码语言:javascript
复制
dequeue(name=None)

从该队列中删除一个元素。如果该操作执行时队列为空,它将阻塞,直到有一个元素要退出队列。在运行时,如果队列是tf.QueueBase,此操作可能会引发错误。在执行之前或执行期间关闭。如果队列已关闭,则队列为空,并且没有可以满足此请求的挂起的入队列操作tf.errors。将会产生OutOfRangeError。如果会话是tf.Session,将报tf.errors.CancelledError错误。

参数:

  • name:操作的名称(可选)。

返回值:

  • 已退出队列的张量元组。

5、dequeue_many

代码语言:javascript
复制
dequeue_many(
    n,
    name=None
)

从该队列中删除队列并连接n个元素。该操作沿着第0维将队列元素分量张量连接起来,形成单个分量张量。dequeued元组中的所有组件的第0维的大小都是n。如果队列已关闭,且剩下的元素少于n个,则会引发OutOfRange异常。在运行时,如果队列是tf.QueueBase,此操作可能会引发错误。在执行之前或执行期间关闭。如果队列已关闭,则该队列包含的元素少于n个,并且没有任何挂起的enqueue操作可以满足该请求tf.errors。将会产生OutOfRangeError。如果会话是tf.Session,将报tf.errors.CancelledError错误。

参数:

  • n:一个标量张量,包含要退出队列的元素数。
  • name:操作的名称(可选)。

返回值:

  • 已退出队列的连接张量列表。

6、dequeue_up_to

代码语言:javascript
复制
dequeue_up_to(
    n,
    name=None
)

从该队列中删除队列并连接n个元素。注意,并非所有队列都支持此操作。如果队列不支持DequeueUpTo,则tf.error。UnimplementedError。该操作沿着第0维将队列元素分量张量连接起来,形成单个分量张量。如果队列没有关闭,则退队列元组中的所有组件的第0维大小都为n。如果队列已关闭,且剩余元素大于0但小于n,则不会引发tf.errors。像tf.QueueBase.dequeue_many这样的OutOfRangeError会立即返回小于n个元素。如果队列已关闭,且队列中还剩0个元素,则出现tf.errors。OutOfRangeError就像dequeue_many一样被抛出。否则,该行为与dequeue_many相同。

参数:

  • n:一个标量张量,包含要退出队列的元素数。
  • name:操作的名称(可选)。

返回值:

  • 已排出队列的连接张量的元组。

7、enqueue

代码语言:javascript
复制
enqueue(
    vals,
    name=None
)

将一个元素注册到此队列。如果执行此操作时队列已满,则它将阻塞,直到元素已进入队列。在运行时,如果队列是tf.QueueBase,此操作可能会引发错误。在执行之前或执行期间关闭。如果队列在此操作运行之前关闭,tf.errors。CancelledError将被提升。如果这个操作被阻塞,并且(i)队列被cancel_pending_enqueues=True的关闭操作关闭,或者(ii)如果会话是tf.Session,将报tf.errors.CancelledError错误。

参数:

  • vals:张量,张量的列表或元组,或包含要排队的值的字典。
  • name:操作的名称(可选)。

返回值:

  • 将一个新的张量元组放入队列的操作。

8、from_list

代码语言:javascript
复制
from_list(
    index,
    queues
)

使用队列[索引]中的队列引用创建队列。

参数:

  • index:一个整数标量张量,它决定被选中的输入。
  • queues:QueueBase对象的列表。

返回值:

  • 一个QueueBase对象。

9、is_closed

代码语言:javascript
复制
is_closed(name=None)

如果队列已关闭,则返回true。如果队列关闭,此操作返回true;如果队列打开,则返回false。

参数:

  • name:操作的名称(可选)。

返回值:

  • 如果队列关闭,则为True;如果队列打开,则为false。

10、size

代码语言:javascript
复制
size(name=None)

计算此队列中的元素数量。

参数:

  • name:操作的名称(可选)。

返回值:

  • 包含该队列中元素数量的标量张量。

二、tf.queue.PaddingFIFOQueue

一个FIFOQueue,它支持通过填充来批量处理可变大小的张量。

继承自:QueueBase

别名:

  • tf.compat.v1.PaddingFIFOQueue
  • tf.compat.v1.io.PaddingFIFOQueue
  • tf.compat.v1.queue.PaddingFIFOQueue
  • tf.compat.v2.queue.PaddingFIFOQueue

PaddingFIFOQueue可以包含动态形状的组件,同时还支持dequeue_many。有关详细信息,请参见构造函数。

1、__init__

代码语言:javascript
复制
__init__(
    capacity,
    dtypes,
    shapes,
    names=None,
    shared_name=None,
    name='padding_fifo_queue'
)

创建一个队列,该队列以先入先出的顺序将元素从队列中取出。一个PaddingFIFOQueue具有有限的容量;支持多个并发的生产者和消费者;并提供准确的一次交货。一个PaddingFIFOQueue包含一个包含最多容量元素的列表。每个元素都是一个定长张量元组,其d类型由d类型描述,其形状由shapes参数描述。必须指定形状参数;队列元素的每个组件必须具有各自的形状。通过将任何形状维度设置为None,可以允许固定秩但大小可变的形状。在这种情况下,输入的形状可能会随着给定的维度而变化,dequeue_many将用零填充给定维度,直到指定批处理中所有元素的最大形状。

参数:

  • capacity:一个整数。可能存储在此队列中的元素数量的上限。
  • dtypes: DType对象的列表。类型的长度必须等于每个队列元素中张量的数量。
  • shapes:与dtypes长度相同的TensorShape对象列表。TensorShape中包含None值的任何维度都是动态的,并且允许在该维度中以可变大小将值排队。
  • names:(可选)。指定队列中与dtypes相同或没有相同长度的组件的字符串列表。如果指定了dequeue方法,则返回一个名称为键的字典。
  • shared_name:(可选)。如果非空,则此队列将在多个会话之间以给定名称共享。
  • name:队列操作的可选名称。

可能产生的异常:

  • ValueError: If shapes is not a list of shapes, or the lengths of dtypes and shapes do not match, or if names is specified and the lengths of dtypes and names do not match.

2、性质

dtypes

  • 队列元素的每个组件的dtypes列表。

name

  • 底层队列的名称。

name

  • 队列元素的每个组件的名称列表。

queue_ref

  • 底层队列引用。

shape

  • 队列元素的每个组件的形状列表。

3、close

代码语言:javascript
复制
close(
    cancel_pending_enqueues=False,
    name=None
)

关闭此队列。这个操作表明,在给定队列中不再有元素进入队列。后续的enqueue和enqueue_many操作将失败。如果队列中保留足够的元素,后续的dequeue和dequeue_many操作将继续成功。随后dequeue和dequeue_许多本来会阻塞等待更多元素的操作(如果没有调用close)现在将立即失败。如果cancel_pending_enqueues为真,所有挂起的请求也将被取消。

参数:

  • cancel_pending_enqueues:(可选)。一个布尔值,默认为False(如上所述)。
  • name:操作的名称(可选)。

返回值:

  • 关闭队列的操作。

4、dequeue

代码语言:javascript
复制
dequeue(name=None)

从该队列中删除一个元素。如果该操作执行时队列为空,它将阻塞,直到有一个元素要退出队列。在运行时,如果队列是tf.QueueBase,此操作可能会引发错误。在执行之前或执行期间关闭。如果队列已关闭,则队列为空,并且没有可以满足此请求的挂起的入队列操作tf.errors。将会产生OutOfRangeError。如果会话是tf.Session,将报tf.errors.CancelledError错误。

参数:

  • name:操作的名称(可选)。

返回值:

  • 已退出队列的张量元组。

5、dequeue_many

代码语言:javascript
复制
dequeue_many(
    n,
    name=None
)

从该队列中删除队列并连接n个元素。该操作沿着第0维将队列元素分量张量连接起来,形成单个分量张量。dequeued元组中的所有组件的第0维的大小都是n。如果队列已关闭,且剩下的元素少于n个,则会引发OutOfRange异常。在运行时,如果队列是tf.QueueBase,此操作可能会引发错误。在执行之前或执行期间关闭。如果队列已关闭,则该队列包含的元素少于n个,并且没有任何挂起的enqueue操作可以满足该请求tf.errors。将会产生OutOfRangeError。如果会话是tf.Session。如果会话是tf.Session,将报tf.errors.CancelledError错误。

参数:

  • n:一个标量张量,包含要退出队列的元素数。
  • name:操作的名称(可选)。

返回值:

  • 已退出队列的连接张量列表。

6、dequeue_up_to

代码语言:javascript
复制
dequeue_up_to(
    n,
    name=None
)

从该队列中删除队列并连接n个元素。注意,并非所有队列都支持此操作。如果队列不支持DequeueUpTo,则tf.error。UnimplementedError。该操作沿着第0维将队列元素分量张量连接起来,形成单个分量张量。如果队列没有关闭,则退队列元组中的所有组件的第0维大小都为n。如果队列已关闭,且剩余元素大于0但小于n,则不会引发tf.errors。像tf.QueueBase.dequeue_many这样的OutOfRangeError会立即返回小于n个元素。如果队列已关闭,且队列中还剩0个元素,则出现tf.errors。OutOfRangeError就像dequeue_many一样被抛出。否则,该行为与dequeue_many相同。

参数:

  • n:一个标量张量,包含要退出队列的元素数。
  • name:操作的名称(可选)。

返回值:

  • 已排出队列的连接张量的元组。

7、enqueue

代码语言:javascript
复制
enqueue(
    vals,
    name=None
)

将一个元素注册到此队列。如果执行此操作时队列已满,则它将阻塞,直到元素已进入队列。在运行时,如果队列是tf.QueueBase,此操作可能会引发错误。在执行之前或执行期间关闭。如果队列在此操作运行之前关闭,tf.errors。CancelledError将被提升。如果这个操作被阻塞,并且(i)队列被cancel_pending_enqueues=True的关闭操作关闭,或者(ii)如果会话是tf.Session,将报tf.errors.CancelledError错误。

参数:

  • vals:张量,张量的列表或元组,或包含要排队的值的字典。
  • name:操作的名称(可选)。

返回值:

  • 将一个新的张量元组放入队列的操作。

8、enqueue_many

代码语言:javascript
复制
enqueue_many(
    vals,
    name=None
)

将零个或多个元素排队到此队列。该操作沿着第0维对每个组件张量进行切片,从而生成多个队列元素。瓦尔斯中的所有张量在第0维中都必须有相同的大小。如果在执行此操作时队列已满,它将阻塞,直到所有元素都进入队列。在运行时,如果队列是tf.QueueBase,此操作可能会引发错误。在执行之前或执行期间关闭。如果队列在此操作运行之前关闭,tf.errors。CancelledError将被提升。如果这个操作被阻塞,并且(i)队列被cancel_pending_enqueues=True的关闭操作关闭,或者(ii)如果会话是tf.Session,将报tf.errors.CancelledError错误。

参数:

  • vals:张量,张量的列表或元组,或从队列元素中获取的字典。
  • name:操作的名称(可选)。

返回值:

  • 将一批张量元组排队到队列的操作。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年09月03日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、概述
  • 二、tf.queue.FIFOQueue
    • 1、__init__
      • 2、属性
        • 3、close
          • 4、dequeue
            • 5、dequeue_many
            • 6、dequeue_up_to
            • 7、enqueue
            • 8、from_list
            • 9、is_closed
            • 10、size
            • 1、__init__
            • 2、性质
            • 3、close
            • 4、dequeue
            • 5、dequeue_many
            • 6、dequeue_up_to
            • 7、enqueue
            • 8、enqueue_many
        • 二、tf.queue.PaddingFIFOQueue
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档