TensorFlow:实战Google深度学习框架(五)多线程输入数据处理框架

  1. 经典的输入数据的处理流程



     

  2. 队列和多线程

    1. 在tensorflow中,队列和变量类似,都是计算图上有状态的节点。其他的计算节点可以修改他们的状态。对于变量,可以通过赋值的操作修改变量的取值。对于队列,修改队列的状态的操作主要有enqueue,dequeue(入队,出队)等。



       

    2. 在TensorFlow中,队列不仅仅是一种数据结构,还是异步计算张量取值的一个重要机制。比如多个线程可以同时项一个队列中写元素,或者同时读取一个队列中的元素

    3. TensorFlow提供了tf.Coordinator和tf.QueueRunner两个类来完成多线程协同的功能。前者主要是用于协同多个线程一起停止,提供了should_stop,request_stop,join三个函数;后者主要用于启动多个线程来操作同一个队列,启动的多线程可以通过tf.Coordinator来进行管理。



       

    4. 输入文件队列:假设现在所有的训练数据都已经存成了tfrecord文件(当训练数据量很大时,则可以将存成多个文件),可以用Tensorflow来管理输入文件列表



       

    5. 组合训练数据(batching):通过上述程序,我们可以可以从文件列表中读取单个数据样例,并对相应的数据可以进行预处理。但是在送进神经网络训练时,输入的时一个batch的数据,这部分实现将单个样例组合成一个batch.Tensorflow中有tf.train.batch()函数和tf.trian.shuffle_batch()函数可以实现这一步骤。这两个函数都会生成一个队列,入队的操作就是生成单个样例的方法,每次出队得到的就是一个batch的数据,二者的区别在于是否会将数据进行随机打乱。



      说明:tf.train.batch和tf.train.shuffle_batch共同点在于当指定的线程数大于1时,会读取同一个文件中的不同的样例,进行处理。tf.train.batch.join和tf.train.shuffle_batch.join函数,是读取不同的文件中的不同的样例

    6.  

  3.  

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值