FIFOQueue继承自QueueBase,QueueBase主要包含入列(enqueue)和出列(dequeue)两个操作,enqueue操作返回计算图中一个操作节点,dequeue操作返回一个张量
tf.FIFOQueue:创建一个先入先出队列
queue.close(cancel_pending_enqueues=True) #关闭队列,如果队列中还有元素,dequeue,dequeue_many还可以执行,直到完全出队列
属性:
capacity:指定队列中的元素数量的上限。
dtypes:DType对象的列表。dtypes的长度必须等于每个队列元素中张量的数量。
shapes:(可选项)
names:(可选项)命名队列的字符串。
shared_name :(可选项)如果非空,则将在多个会话中以给定名称共享此队列。
name:队列操作的可选名称。
#%%
import tensorflow as tf
import numpy as np
import torch
#!/usr/bin/python
# coding:utf-8
# 创建一个先入先出的队列,指定队列最多可以保存3个元素,并指定类型为整数
q = tf.FIFOQueue(3, 'int32')
# 初始化队列中的元素,将[0,10,20]3个元素排入此队列
init = q.enqueue_many(([0, 10, 20], ))
# 将队列中的第1个元素出队列,并存入变量x中
x = q.dequeue()
# 将得到的值加1
y = x + 1
# 将加1后的值重新加入队列
q_inc = q.enqueue([y])
with tf.Session() as sess:
# 队列初始化
init.run()
for _ in range(5):
# 执行数据出队列/出队元素+1/重新加入队列的过程
v, _ = sess.run([x,q_inc])
print(v)
输出:
0 10 20 1 11