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


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


     

  2. 队列和多线程

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


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


       

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

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


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


       

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


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


       

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


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


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

    6.  

  3.  

 

 

相关文章:

  • 2021-12-19
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-04-21
  • 2021-12-06
  • 2022-12-23
猜你喜欢
  • 2021-05-25
  • 2022-01-20
  • 2021-06-21
  • 2021-04-26
  • 2021-08-17
  • 2022-12-23
  • 2021-10-10
相关资源
相似解决方案