TensorFlow文件读取流程分析

文件读取流程

多线程 + 队列

第一阶段:构造文件名队列

第二阶段:读取与解码

第三阶段:批处理

手动开启线程

1、构建文件名队列

将需要读取的文件的文件名放入文件名队列

tf.train.string_ input_ .producer(string_tensor,shuffle=True)

           string_tensor:含文件名+路径的一阶张量

           num_epochs:读几遍数据,默认无限过数据

            return 文件队列

2、读取与解码

1)读取文件内容     

      阅读器默认每次只读取一个样本(文本文件默认一次读取一行 图片一张 二进制文件一次读取          指定字节数   TFRecords默认一次读取一个example)

     tf.TextLineReader:
              阅读文本文件逗号分隔值(CSV) 格式,默认按行读取
              return: 读取器实例
    tf.WholeFileReader: 用于读取图片文件
              return: 读取器实例
    tf.FixedL engthRecordReader(record_ bytes): 二进制文件
             要读取每个记录是固定数量字节的二进制文件
             record_ bytes: 整型,指定每次读取(一个样本)的字节数
             return: 读取器实例
    tf.TFRecordReader: 读取TFRecords文件
             return: 读取器实例
共同读取方法:read(file_queue),并且都会返回一个Tensors元组

每次默认读取一个样本,批处理使用 tf.train.batch 或 tf.train.shuffle_batch

2)解码

读取不同类型文件,进行相对应解码

解码阶段。默认所有解码成tf.unit8类型,如果转换tf.cast()

       tf.decode_ csv:解码文本文件内容
       tf.image.decode_ jpeg(contents)
            将JPEG编码的图像解码为uint8张量
            return:uint8张量,3-D形状[height, width, channels]
       tf.image.decode_ png(contents)
             将PNG编码的图像解码为uint8张量
             return:张量 类型,3-D形状[height, width, channels]
       tf.decode_ raw: 解码二进制文件内容
             与t.FixedLengthRecordReader搭配使用, 二进制读取为uint8类型


3、批处理

tf.train.batch(tensors, batch_ size, num_ threads = 1, capacity = 32,name=None)
     读取指定大小(个数)的张量
     tensors: 可以是包含张量的列表,批处理的内容放到列表当中
     batch_ size:从队列中读取的批处理大小
     num_ threads: 进入队列的线程数
    capacity: 整数,队列中元素的最大数量
    return:tensors
tf.train.shuffle_ batch


4、线程操作

手动开启线程  tf.train.QueueRunner()

 开启会话   

tf.train.start queue_ runners(sess=None, coord=None)

       收集图中所有的队列线程,默认同时启动线程

       sess: 所在的会话.

       coord: 线程协调器

       return: 返回所有线程

tf.train.Coordinator()

     线程协调员,对线程进行管理和协调

     request_ stop0: 请求停止

     should_ stop(: 询问是否结束

     join(threads=None, stop_ grace_ period_ secs=120): 回收线程

     return: 线程协调员实例

           
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值