Tensorflow: 队列操作

本文介绍了TensorFlow中的队列操作,包括FIFOQueue和RandomShuffleQueue的使用,详细阐述了enqueue和dequeue方法,以及QueueRunner和Coordinator在管理线程和协调任务中的作用。此外,还讲解了读取数据的函数如string_input_producer和shuffle_batch,以及enqueue_many参数的影响。
摘要由CSDN通过智能技术生成
import tensorflow as tf

Tensorflow有两种队列 Queue 类, 两者都继承与父类 tf.QueueBase :

  • 先进先出队列 tf.FIFOQueue
  • 随机队列 tf.RandomShuffleQueue

队列与Op一样也是图中的一个节点, 类中的主要方法: 插入元素 queue.enqueue() 和取出元素 queue.dequeue() 返回一个Op, 也为图中的一个节点.

Queue

tf.FIFOQueue
  • init()
'''
参数:
    capacity: (must)整数, 队列的能容纳的最大元素的数量;
    dtypes: (must)dtype list, 列表长度与队列中单个元素包含的Tensor数量相同, 对应每个Tensor的数据类型;
    shapes: TensorShape list, 与dtypes类似, 长度与单个元素包含的Tensor数量相同, 对应每个Tensor的形状;
    names: string list, 与dtypes和shapes类似, 长度与单个元素包含的Tensor数量相同, 对应每个Tensor的名称;
    shared_name: 不为空, 则队列在给定的多个Session之间共享;
    name: 此队列的名称;
'''
tf.RandomShuffleQueue
  • init()
'''
性质: 出列时随机选择元素.
参数:
    capacity: (must)队列长度;
    min_after_dequeue: (must)队列中至少保留的元素的数量;
    dtypes: (must)dtype list, 列表长度与队列中单个元素包含的Tensor数量相同, 对应每个Tensor的数据类型;
    shapes: TensorShape list, 与dtypes类似, 长度与单个元素包含的Tensor数量相同, 对应每个Tensor的形状;
    names: string list, 与dtypes和shapes类似, 长度与单个元素包含的Tensor数量相同, 对应每个Tensor的名称;
    seed: 随机种子;
    shared_name: 不为空, 则队列在给定的多个Session之间共享;
    name: 此队列的名称;
'''
队列共同方法
  • enqueue()
'''
作用: 入列单个元素.
参数:
    vals: (must)入列元素; 根据队列的设置, 可能为单个Tensor, 或list/tuple of Tensor, 或根据names构成的[name: Tensor]键值对字典;
    name: 这个入列Op的名称.
输出: Op, 入列Op.
''' 
  • enqueue_many()
'''
作用: 入列多个元素.
参数:
    vals: (must)Tensor的传入形式与enqueue()方法相同, 不同的因为是插入多个元素, 所以此处的Tensor比队列规定的Tensor多一维;
    对Tensor的第一位进行分割, 得到的多个Tensor是批量插入的元素;
    因此此处的Tensor的第一维的大小表示的是批量插入的元素的数量;
    name: 这个入列Op的名称.
输出: Op, 批量入列Op.
'''
queue = tf.FIFOQueue(10, dtypes=tf.float32)
en_op_1 = queue.enqueue([1.0])
# en_op_2 = queue.enqueue_many([1.0, 1.0, 2.0, 4.0, 5.0])  # 这样写会报错
en_op_2 = queue.enqueue_many([[1.0, 1.0, 2.0, 4.0, 5.0]])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值