tf.queue

参考  tf.queue - 云+社区 - 腾讯云

目录

一、类

二、tf.queue.FIFOQueue

1、__init__

2、close

3、dequeue

4、dequeue_many

5、dequeue_up_to

6、enqueue

7、enqueue_many

8、from_list

9、is_closed

10、size

三、tf.queue.PaddingFIFOQueue

1、__init__

2、close

3、dequeue

4、dequeue_many

5、dequeue_up_to

6、enqueue

7、enqueue_many

8、from_list

9、is_closed

10、size

四、tf.queue.PriorityQueue

1、__init__

2、close

3、dequeue

4、dequeue_many

5、dequeue_up_to

6、enqueue

7、enqueue_many

8、from_list

9、is_closed

10、size

五、tf.queue.QueueBase

1、__init__

2、close

3、dequeue

4、dequeue_many

5、dequeue_up_to

6、enqueue

7、enqueue_many

8、from_list

9、is_closed

10、size

六、tf.queue.RandomShuffleQueue

1、__init__

2、close

3、dequeue

4、dequeue_many

5、dequeue_up_to

6、enqueue

7、enqueue_many

8、from_list

9、is_closed

10、size


一、类

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

二、tf.queue.FIFOQueue

1、__init__

__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:队列操作的可选名称。

按先入先出顺序对元素进行排队的队列实现。

dtypes

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

name

  • 底层队列的名称。

names

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

queue_ref

  • 底层队列引用。

shapes

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

2、close

close(
    cancel_pending_enqueues=False,
    name=None
)

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

参数:

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

返回值:

  • 关闭队列的操作。

3、dequeue

dequeue(name=None)

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

参数:

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

返回值:

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

4、dequeue_many

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:操作的名称(可选)。

返回值:

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

5、dequeue_up_to

dequeue_up_to(
    n,
    name=None
)

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

参数:

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

返回值:

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

6、enqueue

enqueue(
    vals,
    name=None
)

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

参数:

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

返回值:

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

7、enqueue_many

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:操作的名称(可选)。

返回值:

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

8、from_list

from_list(
    index,
    queues
)

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

参数:

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

返回值:

  • 一个QueueBase对象。

可能产生的异常:

  • TypeError: When queues is not a list of QueueBase objects, or when the data types of queues are not all the same.

9、is_closed

is_closed(name=None)

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

参数:

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

返回值:

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

10、size

size(name=None)

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

参数:

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

返回值:

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

三、tf.queue.PaddingFIFOQueue

PaddingFIFOQueue可以包含动态形状的组件,同时还支持dequeue_many。有关详细信息,请参见构造函数。看到tf.queue.QueueBase获取该类上方法的描述。

1、__init__

__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、close

close(
    cancel_pending_enqueues=False,
    name=None
)

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

参数:

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

返回值:

  • 关闭队列的操作。

3、dequeue

dequeue(name=None)

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

参数:

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

返回值:

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

4、dequeue_many

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:操作的名称(可选)。

返回值:

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

5、dequeue_up_to

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:操作的名称(可选)。

返回值:

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

6、enqueue

enqueue(
    vals,
    name=None
)

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

参数:

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

返回值:

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

7、enqueue_many

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:操作的名称(可选)。

返回值:

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

8、from_list

from_list(
    index,
    queues
)

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

参数:

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

返回值:

  • 一个QueueBase对象。

可能产生的异常:

  • TypeError: When queues is not a list of QueueBase objects, or when the data types of queues are not all the same.

9、is_closed

is_closed(name=None)

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

参数:

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

返回值:

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

10、size

size(name=None)

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

参数:

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

返回值:

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

四、tf.queue.PriorityQueue

按优先级顺序对元素进行排队的队列实现。

1、__init__

__init__(
    capacity,
    types,
    shapes=None,
    names=None,
    shared_name=None,
    name='priority_queue'
)

创建一个队列,该队列以先入先出的顺序将元素从队列中取出。优先队列具有有限的容量;支持多个并发的生产者和消费者;并提供准确的一次交货。PriorityQueue包含一个包含最多容量元素的列表。每个元素都是一个固定长度的张量元组,张量的d类型由类型描述,其形状由shape参数可选地描述。如果指定了shapes参数,则队列元素的每个组件必须具有各自的固定形状。如果未指定,则不同的队列元素可能具有不同的形状,但是不允许使用dequeue_many。到PriorityQueue的入队列和退队列必须在开头包含一个额外的元组条目:优先级。优先级必须是int64标量(用于enqueue)或int64向量(用于enqueue_many)。

参数:

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

2、close

close(
    cancel_pending_enqueues=False,
    name=None
)

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

参数:

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

返回值:

  • 关闭队列的操作。

3、dequeue

dequeue(name=None)

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

参数:

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

返回值:

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

4、dequeue_many

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:操作的名称(可选)。

返回值:

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

5、dequeue_up_to

dequeue_up_to(
    n,
    name=None
)

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

参数:

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

返回值:

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

6、enqueue

enqueue(
    vals,
    name=None
)

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

参数:

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

返回值:

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

7、enqueue_many

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:操作的名称(可选)。

返回值:

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

8、from_list

from_list(
    index,
    queues
)

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

参数:

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

返回值:

  • 一个QueueBase对象。

9、is_closed

is_closed(name=None)

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

参数:

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

返回值:

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

10、size

size(name=None)

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

参数:

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

返回值:

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

五、tf.queue.QueueBase

队列是一个TensorFlow数据结构,它跨多个步骤存储张量,并公开入队列和出队列张量的操作。每个队列元素都是一个或多个张量的元组,其中每个元组组件都有一个静态dtype,并且可能有一个静态形状。队列实现支持处理单个元素的入队和出队版本,支持同时对一批元素进行入队和出队的版本。看到tf.queue。FIFOQueue tf.queue。这个类的具体实现,以及如何创建它们的说明。

1、__init__

__init__(
    dtypes,
    shapes,
    names,
    queue_ref
)

从队列引用构造队列对象。如果提供了这两个可选列表(形状和名称),则它们的长度必须与dtypes相同。给定索引处的值表示要用于dtypes中相应队列组件的形状和名称。

参数:

  • dtypes:类型列表。类型的长度必须等于每个元素中张量的数量。
  • shapes:元素中张量形状的约束:形状元组列表或None。此列表的长度与dtypes相同。如果元素中任意张量的形状受到约束,则所有张量都必须是;如果不应该约束形状,则形状可以为空。
  • names:可选的名称列表。如果提供了,enqueue()和dequeue()方法将使用这些名称作为键的字典。必须为None或与dtypes相同长度的列表或元组。
  • queue_ref:队列引用,即队列op的输出。

可能产生的异常:

  • ValueError: If one of the arguments is invalid.

2、close

close(
    cancel_pending_enqueues=False,
    name=None
)

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

参数:

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

返回值:

  • 关闭队列的操作。

3、dequeue

dequeue(name=None)

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

参数:

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

返回值:

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

4、dequeue_many

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:操作的名称(可选)。

返回值:

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

5、dequeue_up_to

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:操作的名称(可选)。

返回值:

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

6、enqueue

enqueue(
    vals,
    name=None
)

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

参数:

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

返回值:

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

7、enqueue_many

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:操作的名称(可选)。

返回值:

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

8、from_list

@staticmethod
from_list(
    index,
    queues
)

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

参数:

index:一个整数标量张量,它决定被选中的输入。

queues:QueueBase对象的列表。

返回值:

  • 一个QueueBase对象。

可能产生的异常:

  • TypeError: When queues is not a list of QueueBase objects, or when the data types of queues are not all the same.

9、is_closed

is_closed(name=None)

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

参数:

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

参数值:

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

10、size

size(name=None)

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

参数:

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

参数值:

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

六、tf.queue.RandomShuffleQueue

按随机顺序对元素进行排队的队列实现。

1、__init__

__init__(
    capacity,
    min_after_dequeue,
    dtypes,
    shapes=None,
    names=None,
    seed=None,
    shared_name=None,
    name='random_shuffle_queue'
)

创建一个按随机顺序对元素进行排队的队列。随机打乱队列具有有限的容量;支持多个并发的生产者和消费者;并提供准确的一次交货。RandomShuffleQueue持有一个包含最多容量元素的列表。每个元素都是一个定长张量元组,张量的d类型由d类型描述,其形状由shapes参数可选地描述。如果指定了shapes参数,则队列元素的每个组件必须具有各自的固定形状。如果未指定,则不同的队列元素可能具有不同的形状,但是不允许使用dequeue_many。min_after_dequeue参数允许调用者指定在dequeue或dequeue_many操作完成后仍保留在队列中的元素的最小数量,以确保元素混合的最小级别。这个不变式通过阻塞这些操作来维护,直到有足够的元素进入队列。min_after_dequeue参数在队列关闭后将被忽略。

参数:

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

2、close

close(
    cancel_pending_enqueues=False,
    name=None
)

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

参数:

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

返回值:

  • 关闭队列的操作。

3、dequeue

dequeue(name=None)

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

参数:

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

返回值:

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

4、dequeue_many

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:操作的名称(可选)。

返回值:

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

5、dequeue_up_to

dequeue_up_to(
    n,
    name=None
)

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

参数:

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

返回值:

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

6、enqueue

enqueue(
    vals,
    name=None
)

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

参数:

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

返回值:

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

7、enqueue_many

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:操作的名称(可选)。

返回值:

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

8、from_list

from_list(
    index,
    queues
)

参数:

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

返回值:

  • 一个QueueBase对象。

可能产生的异常:

  • TypeError: When queues is not a list of QueueBase objects, or when the data types of queues are not all the same.

9、is_closed

is_closed(name=None)

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

参数:

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

返回值:

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

10、size

size(name=None)

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

参数:

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

返回值:

  • 包含该队列中元素数量的标量张量。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下代码有什么错误,怎么修改: import tensorflow.compat.v1 as tf tf.disable_v2_behavior() from PIL import Image import matplotlib.pyplot as plt import input_data import model import numpy as np import xlsxwriter num_threads = 4 def evaluate_one_image(): workbook = xlsxwriter.Workbook('formatting.xlsx') worksheet = workbook.add_worksheet('My Worksheet') with tf.Graph().as_default(): BATCH_SIZE = 1 N_CLASSES = 4 image = tf.cast(image_array, tf.float32) image = tf.image.per_image_standardization(image) image = tf.reshape(image, [1, 208, 208, 3]) logit = model.cnn_inference(image, BATCH_SIZE, N_CLASSES) logit = tf.nn.softmax(logit) x = tf.placeholder(tf.float32, shape=[208, 208, 3]) logs_train_dir = 'log/' saver = tf.train.Saver() with tf.Session() as sess: print("从指定路径中加载模型...") ckpt = tf.train.get_checkpoint_state(logs_train_dir) if ckpt and ckpt.model_checkpoint_path: global_step = ckpt.model_checkpoint_path.split('/')[-1].split('-')[-1] saver.restore(sess, ckpt.model_checkpoint_path) print('模型加载成功, 训练的步数为: %s' % global_step) else: print('模型加载失败,checkpoint文件没找到!') prediction = sess.run(logit, feed_dict={x: image_array}) max_index = np.argmax(prediction) workbook.close() def evaluate_images(test_img): coord = tf.train.Coordinator() threads = tf.train.start_queue_runners(coord=coord) for index,img in enumerate(test_img): image = Image.open(img) image = image.resize([208, 208]) image_array = np.array(image) tf.compat.v1.threading.Thread(target=evaluate_one_image, args=(image_array, index)).start() coord.request_stop() coord.join(threads) if __name__ == '__main__': test_dir = 'data/test/' import glob import xlwt test_img = glob.glob(test_dir + '*.jpg') evaluate_images(test_img)
最新发布
07-08

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wanderer001

ROIAlign原理

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值