计算密集型:IO速度稍慢、一次性读取消耗内存。
解决:tensorflow能够多线程并行的执行任务(真正的多线程):队列、文件的改善(tfrecords)
在训练样本的时候,希望读入的训练样本是有序的
tf.FIFOQueue 先进先出队列,按顺序出队列
tf.RandomShuffleQueue 随机出队列
FIFOQueue(capacity, dtypes, name=‘fifo_queue‘)
案例:完成一个 出队列、+1、入队列 操作(同步操作)
import tensorflow as tf import os os.environ[‘TF_CPP_MIN_LOG_LEVEL‘] = ‘2‘ # 模拟同步(完成一个 出队列、+1、入队列 操作) # 1 定义队列 Q = tf.FIFOQueue(3, tf.float32) # enm_op = Q.enqueue_many([0.1, 0.2, 0.3]) # 这么写传入的数据会被当成张量而不是数组 enm_op = Q.enqueue_many([[0.1, 0.2, 0.3], ]) # 2 定义一些处理数据的op de_op = Q.dequeue() data = de_op + 1 # 重载+ en_op = Q.enqueue(data) with tf.Session() as sess: # 初始化队列 sess.run(enm_op) # 处理数据 for i in range(100): # tensorflow中运行操作有依赖性 sess.run(en_op) # 模拟训练数据 for i in range(Q.size().eval()): # size是个op必须运行 print(sess.run(Q.dequeue()))

3、线程和协调器
二、文件读取
三、图片处理
原文:https://www.cnblogs.com/ysysyzz/p/12315518.html