TensorFlow中常用队列方法总结
一般,要创建一个队列,首先要选定数据出入类型。如上图后三个。
q=tf.FIFOQueue(3,"float")
sess=tf.Session()
init=q.enqueue_many(([0.1,0.2,0.3]))
sess.run(int)
函数的一个参数是数据的个数,3. 第二个参数是元素的类型。
TensorFlow中任何操作都是在会话中进行,session 中进行元素初始化。
接下来看一个简单应用:
import tensorflow as tf
with tf.Session() as sess:
q = tf.FIFOQueue(3,"float")
init = q.enqueue_many(([0.1, 0.2, 0.3],))
init2 = q.dequeue()
init3 = q.enqueue(1.)
sess.run(init)
sess.run(init2)
sess.run(init3)
quelen = sess.run(q.size())
for i in range(quelen):
print(sess.run(q.dequeue()))
最后打打印结果是:
线程问题:
#global_variables_initializer()
import tensorflow as tf
#创建一个数列,add——op是将1叠加到counter中。
q = tf.FIFOQueue(1000,"float32")
counter = tf.Variable(0.0)
add_op = tf.assign_add(counter, tf.constant(1.0))
enqueueData_op = q.enqueue(counter)
sess=tf.Session()
qr = tf.train.QueueRunner(q, enqueue_ops=[add_op, enqueueData_op] * 2)
#这是一个队列管理器调用2个线程去完成。
sess.run(tf.global_variables_initializer())
enqueue_threads = qr.create_threads(sess, start=True) # 启动入队线程
coord = tf.train.Coordinator() #控制协调线程
enqueue_threads = qr.create_threads(sess, coord = coord,start=True)
#也对队列进行操作
for i in range(10):
print(sess.run(q.dequeue()))