tf队列使用

"""
队列和变量类似,都是计算图上有状态的节点,修改队列状态的操作主要有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],))
    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()
    # 操作
    #x_power = x[0] * x[0]
    #y = [x_power, tf.cast(x_power, tf.float32) - x[1], x_power + x[2]]
    # 入队列
    #power_enqueue = queue.enqueue(y)

    with tf.Session() as sess:
        init.run()
        for _ in range(4):
            #v, __ = sess.run([x, power_enqueue])
            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()

    # 操作
    #x_power = x[0] * x[0]
    #y = [x_power, tf.cast(x_power, tf.float32) - x[1], x_power + x[2]]
    # 入队列
    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()
    #fifo_queue_multi_queue()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值