"""
队列和变量类似,都是计算图上有状态的节点,修改队列状态的操作主要有Enqueue、EnqueueMany、Dequeue。
多个线程可以同时向一个队列中写元素,或者从一个队列中读元素。
"""
import tensorflow as tf
def fifo_queue():
queue = tf.FIFOQueue(5, dtypes=[tf.int32])
init = queue.enqueue_many([[1, 2, 3, 4]])
x = queue.dequeue()
y = x * x
power_enqueue = queue.enqueue([y])
with tf.Session() as sess:
init.run()
for _ in range(10):
v, __ = sess.run([x, power_enqueue])
print(v)
pass
pass
def fifo_queue_multi_queue():
queue = tf.FIFOQueue(5, dtypes=[tf.int32, tf.float32, tf.int32])
init = queue.enqueue_many([[1, 2, 3, 4], [1.0, 2.0, 3.0, 4.9], [1, 2, 3, 4]])
x = queue.dequeue()
with tf.Session() as sess:
init.run()
for _ in range(4):
v= sess.run([x])
print(v)
pass
pass
def random_shuffle_queue_multi_queue():
queue = tf.RandomShuffleQueue(5, min_after_dequeue=3, dtypes=[tf.int32, tf.float32, tf.int32])
init = queue.enqueue_many([[1, 2, 3, 4], [1.0, 2.0, 3.0, 4.9], [1, 2, 3, 4]])
x = queue.dequeue()
power_enqueue = queue.enqueue(x)
with tf.Session() as sess:
init.run()
for _ in range(4):
v,__= sess.run([x,power_enqueue])
print(v)
pass
pass
if __name__ == '__main__':
random_shuffle_queue_multi_queue()