zoukankan      html  css  js  c++  java
  • TensorFlow01:文件读取

    文件读取流程:构造文件名队列--->读取与解码--->批处理

     构造文件名队列:

    需要读取文件的文件名放入文件名队列:
    tf.train.string_input_producer(string_tensor,shuffle=True)
    string_tensor:含有文件名+路径的一阶张量
    num_epochs:过几篇数据,默认无限过数据
    return 文件队列

    读取与解码:

    从队列中读取内容,并进行解码操作,阅读器默认每次只读取一个样本
    读取文件内容:文本文件默认一次读取一行,图片一张,二进制一次指定字节数
    tf.TextLinerReader:读取文本文件逗号分隔值(csv格式),默认按行读取,返回阅读器实例
    tf.WholeFileReader:用于读取图片文件,返回阅读器实例
    tf.FixedLengthRecordReader(record_bytes):二进制文件
    tf.TFRecordReader:读取TFRecords文件
    它们共同读取方法:reader.read(file_queue),并且都会返回一个Tensors元组(key,value);key文件名字,value一个样本
    默认只会读取一个样本,tf.train.batch或tf.tain.shuffle_batch进行批处理操作。
    内容解码:
    tf.decode_csv:解码文本文件内容
    tf.image.decode_jpeg(contents):将jpeg编码的图像解码为unint8,形状[h,w,channels]
    tf.image.decode_png(contenst):将png编码的图像解码为unint8,形状[h,w,channels]
    tf.decode_raw():解码二进制文件内容与tf.FixedLengthRecordReader搭配使用,读取unit8类型
    如果之后需要转换指定类型则可以使用tf.cast()进行相应转换

    批处理:

    解码后,可以直接获取默认一个样本内容,要获得多个样本,需要加如到新的队列进行批处理
    tf.train.batch(tensor,batch_size,num_threads=1,capacity=32,name=None)  #tf.train.shuffle+batch
         tensors:可以张量的列表,批处理的内容放到列表当中
    batch_size:从队列中读取的批处理大小
    num_threads:进入队列的线程数
    capcity:整数,队列中原属的最大数量
    return:tensors

    线程操作:

    tf.train.QueueRunner()   #创建队列队形
    tf.train.start_queue_runners(sess=None,coord=None) # 启动他的运行队列操作的线程
    tf.train.Coordinator()   # 线程协调员,对线程进行管理和协调
    request_stop():请求停止
    should_stop():询问是否结束
    join(threads=None,stop_grace_period_secs=120):回收线程

     

    读取数据准备:

    单个图片:[h,w,channel]       多个图片:[batch,h,w,channel]
    图片的大小需要一致:tf.image.resize_images(images,size) #[batch,h,w,c],new_h,new_w
    构造文件名队列---读取二进制数据闭关进行解码---处理图片形状即数据类型,批处理---开启会话线程运行
    tf.transpose(depth_major,[1,2,0]).eval()    # [c,h,w]  转换 [h,w,c]

    从队列中读取内容,并进行解码操作,阅读器默认每次只读取一个样本

    读取文件内容:文本文件默认一次读取一行,图片一张,二进制一次指定字节数

    tf.TextLinerReader:读取文本文件逗号分隔值(csv格式),默认按行读取,返回阅读器实例

    tf.WholeFileReader:用于读取图片文件,返回阅读器实例

    tf.FixedLengthRecordReader(record_bytes):二进制文件

    tf.TFRecordReader:读取TFRecords文件

    它们共同读取方法:reader.read(file_queue),并且都会返回一个Tensors元组(key,value);key文件名字,value一个样本

    默认只会读取一个样本,tf.train.batchtf.tain.shuffle_batch进行批处理操作。

    内容解码

    tf.decode_csv:解码文本文件内容

    tf.image.decode_jpeg(contents):jpeg编码的图像解码为unint8,形状[h,w,channels]

    tf.image.decode_png(contenst):将png编码的图像解码为unint8,形状[h,w,channels]

    tf.decode_raw():解码二进制文件内容与tf.FixedLengthRecordReader搭配使用,读取unit8类型

    如果之后需要转换指定类型则可以使用tf.cast()进行相应转换

  • 相关阅读:
    学习笔记——Maven 如何处理传递性依赖
    gitlab 部署
    jenkins部署
    python 使用json格式转换
    php加载memcache
    centos6.5 apache+tomcat结合 负载均衡
    linux部署tomcat
    linux安装java环境
    kickstart安装
    cobbler部署
  • 原文地址:https://www.cnblogs.com/jumpkin1122/p/11521029.html
Copyright © 2011-2022 走看看