Tensorflow–tf.FIFOQueue详解
描述
tf.FIFOQueue根据先进先出(FIFO)的原则创建一个队列。队列是Tensorflow的一种数据结构,每个队列的元素都是包含一个或多个张量的元组,每个元组都有静态的类型和尺寸。入列和出列可以支持一次一个元素,或一次一批元素。它继承于Tensorflow队列执行的基类tf.QueueBase。队列是Tensorflow计算图异步处理张量的重要对象。
初始化
init
__init__(
capacity,
dtypes,
shapes=None,
names=None,
shared_name=None,
name='fifo_queue'
)
创建一个队列元素按照先进先出的顺序出列的队列。
属性
- capacity
整形数字,标识队列可以存储的元素的最大数量 - dtypes
一个Dtype对象的列表,长度等于队列元素中的张量个数 - shapes
队列元素中的每个组成部分的尺寸对象组成的列表 - name
队列操作的命名 - shared_name
队列在不同session共享时使用的名称 - names
队列元素中的每个组成部分的命名组成的列表
方法
- close
close(
cancel_pending_enqueues=False,
name=None
)
此方法用来关闭队列,标示没有元素再入列,如果队列中还有元素,则出列操作可以执行,否则会失败。
参数:
cancel_pending_enqueues: 可选,boolean类型,默认False,为True的时候,挂起的请求将被取消;
name:可选,队列操作的名称
返回:
返回队列的关闭操作
- dequeue
dequeue(name=None)
从队列中移出一个元素。当队列为空的时候,将会阻止此操作,直到有一个元素可以出列。
队列关闭的情况下,操作会报错。如果队列为空且没有入列操作可执行,则报 tf.errors.OutOfRangeError错误。 如果执行此操作的session关闭, 将报tf.errors.CancelledError错误。
参数:
name:可选,队列操作的名称
返回:
返回包含出列张量的元组
- dequeue_many
dequeue_many(
n,
name=None
)
将n个元素连接到一起移出队列。本操作会将张量的第0维连接到一起形成一个张量出列,所以所有出列的元素组成的元组的第0维的尺寸为n。
如果队列已经关闭,或是队列中剩余