TensorFlow函数教程:tf.io.PaddingFIFOQueue

2019-02-21 10:01 更新

tf.io.PaddingFIFOQueue函数

类 PaddingFIFOQueue

继承自: QueueBase

别名:

  • 类 tf.PaddingFIFOQueue
  • 类 tf.io.PaddingFIFOQueue

定义在:tensorflow/python/ops/data_flow_ops.py。

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

PaddingFIFOQueue可能包含具有动态形状的组件,同时也支持dequeue_many。

__init__

__init__(
    capacity,
    dtypes,
    shapes,
    names=None,
    shared_name=None,
    name='padding_fifo_queue'
)

创建一个队列,以先进先出顺序将元素出列。

具有有限容量的PaddingFIFOQueue;支持多个并发生产者和使用者;并提供准确的一次交付。

PaddingFIFOQueue包含最多capacity元素的列表。每个元素都是一个固定长度的张量元组,其dtypes由dtypes描述,其形状由shapes参数描述。

所述shapes参数必须指定;queue元素的每个组件必须具有相应的形状。通过将任何shape维度设置为None,允许固定秩但可变维度的shape。在这种情况下,输入的shape可能会沿着给定的维度变化,并且dequeue_many将使用零填充给定的维度,直到给定批处理中所有元素的最大shape。

参数:

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

可能引发的异常:

  • ValueError:如果shapes不是shapes列表,或者dtypes和shapes的长度不匹配,或者指定了names且dtypes和names的长度不匹配。

属性

dtypes

queue元素的每个组件的dtypes列表。

name

底层队列的名称。

names

queue元素的每个组件的names列表。

queue_ref

底层队列引用。

shapes

queue元素的每个组件的shapes列表。

方法

close

close(
    cancel_pending_enqueues=False,
    name=None
)

关闭此队列。

此操作表示在给定队列中不再有元素排队。随后enqueue和enqueue_many 操作将失败。如果队列中仍有足够的元素,则后续的dequeue和dequeue_many操作将继续成功。随后的dequeue和dequeue_many操作会阻止等待更多元素(如果没有调用close)将立即失败。

如果cancel_pending_enqueues是True,所有待处理的请求也将被取消。

参数:

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

返回:

关闭队列的操作。

dequeue

dequeue(name=None)

从此队列中取消一个元素。

如果在执行此操作时队列为空,则它将阻塞,直到有一个要出队的元素。

在运行时,如果队列在执行之前或期间是tf.QueueBase.close,则此操作可能会引发错误。如果队列已关闭,则队列为空,并且没有可以满足此请求的待处理入队操作,将引发tf.errors.OutOfRangeError。如果会话是tf.Session.close,则会引发tf.errors.CancelledError。

参数:

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

返回:

已经出列的张量元组。

dequeue_many

dequeue_many(
    n,
    name=None
)



从此队列中出列并连接n元素。

此操作沿第0维连接队列元素组件张量,以生成单个组件张量。出列元组中的所有组件在第0维中的大小为n。

如果队列已关闭且剩余的元素少于n,则会引发 OutOfRange异常。

在运行时,如果队列在执行之前或期间是tf.QueueBase.close,则此操作可能会引发错误。如果队列关闭,则队列包含的元素少于n个,并且没有可以满足此请求的待处理入队操作,将引发tf.errors.OutOfRangeError。如果会话是tf.Session.close,则会引发tf.errors.CancelledError。

参数:

  • n:包含要出列的元素数量的标量Tensor。
  • name:操作的名称(可选)。

返回:

已出列的连接张量列表。

dequeue_up_to

dequeue_up_to(
    n,
    name=None
)

从此队列中出列并连接n个元素。

注意所有队列都不支持此操作。如果队列不支持DequeueUpTo,则将引发tf.errors.UnimplementedError。

此操作沿第0维连接队列元素组件张量,以生成单个组件张量。如果队列尚未关闭,则出列元组中的所有组件将在第0维中具有大小n。

如果队列已关闭并且剩余的元素数量多于0但少于n,则不会像tf.QueueBase.dequeue_many那样引发tf.errors.OutOfRangeError,而是立即返回少于n个元素。如果队列已关闭且队列中剩余0个元素,则会引发tf.errors.OutOfRangeError,就像在dequeue_many中一样。 否则行为与dequeue_many相同。

参数:

  • n:包含要出列的元素数量的标量Tensor。
  • name:操作的名称(可选)。

返回:

已经出列的连接张量的元组。

enqueue

enqueue(
    vals,
    name=None
)

将一个元素排入此队列。

如果在执行此操作时队列已满,则它将阻塞,直到该元素已入队。

在运行时,如果队列在执行之前或期间是tf.QueueBase.close,则此操作可能会引发错误。如果在此操作运行之前关闭队列,则将引发tf.errors.CancelledError。如果此操作被阻止,并且(i)通过cancel_pending_enqueues = True的关闭操作关闭队列,或者(ii)会话为tf.Session.close,则将引发tf.errors.CancelledError。

参数:

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

返回:

将新元组的张量排入队列的操作。

enqueue_many

enqueue_many(
    vals,
    name=None
)

将零个或多个元素排入此队列。

此操作沿着第0维度切割每个组件张量以生成多个队列元素。val中的所有张量在第0维中必须具有相同的大小。

如果在执行此操作时队列已满,它将阻塞,直到所有元素都已入队。

在运行时,如果队列在执行之前或期间是tf.QueueBase.close,则此操作可能会引发错误。如果在此操作运行之前关闭队列,则将引发tf.errors.CancelledError。如果此操作被阻止,并且(i)通过cancel_pending_enqueues = True的关闭操作关闭队列,或者(ii)会话为tf.Session.close,则将引发tf.errors.CancelledError。

参数:

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

返回:

将一批张量的元组排入队列的操作。

from_list

from_list(
    index,
    queues
)

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

参数:

  • index:整数标量张量,用于确定所选的输入。
  • queues:QueueBase对象列表。

返回:

一个QueueBase对象。

可能引发的异常:

  • TypeError:当queues不是QueueBase对象列表,或者queues的数据类型不完全相同。

is_closed

is_closed(name=None)

如果队列关闭,则返回true。

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

参数:

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

返回:

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

size

size(name=None)

计算此队列中的元素数。

参数:

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

返回:

标量张量,包含此队列中的元素数。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号