tensorflow数据读取

temsorflow数据读取机制

TFRecords

TensorFLow从文件读取图片的四种方式

  • 优点:TFRecords其实是一种二进制文件,能更好的利用内存,更方便复制和移动,因为图像和标注可以存储在一起,避免了从硬盘上打开文件再进行数据读取的时间,因而更高效

  • 缺点:不如其他格式好理解

  • 读:从TFRecords文件中读取数据, 可以使用tf.TFRecordReader的tf.parse_single_example解析器。这个操作可以将Example协议内存块(protocol buffer)解析为张量。

  • 写:TFRecords文件包含了tf.train.Example 协议内存块(protocol buffer)(协议内存块包含了字段 Features)。我们可以写一段代码获取你的数据, 将数据填入到Example协议内存块(protocol buffer),将协议内存块序列化为一个字符串, 并且通过tf.python_io.TFRecordWriter 写入到TFRecords文件。
    读写TFRecords数据的例子、迭代器、dataset的介绍
    将数据转化为tf.Example要求的3种类型
    tf.train.BytesList/tf.train.FloatList/tf.train.Int64List
    十图详解tensorflow数据读取机制
      介绍了tf的文件名队列和内存队列模式
    tf.train.string_input_producer(string_tensor, num_epochs=None, shuffle=True, seed=None, capacity=32, shared_name=None, name=None, cancel_op=None) 负责创建一个文件名队列 输入为tfrecord,创建的是tfrecord的队列 输入是文件名,创建的是文件名队列

    num_epochs : epoch的数目
    shuffle:在一个epoch是否随机打乱顺序
    capacity : 队列容量,数据有出有进,所以可以不用设置太大,保持默认就可以

    内存队列不需要我们创建,只需要使用reader对象从文件名队列中读取数据就可以
    此时文件名队列和内存队列还没有数据,采用tf.train.start_queue_runners启动填充队列的线程
    【TensorFlow动手玩】队列
      介绍了队列管理器、线程、coordinator
      tensorflow中关于队列使用的实验
      入队操作是从硬盘中读取数据,放到内存当中,速度较慢,当在主线程中执行数据读取和数据处理时,两个任务串行进行,入队后才可以处理数据,而采用QueueRunner可以创建一系列新的线程进行入队操作,而主线程处理数据,在神经网络的训练中,数据处理和数据读取就是异步执行的,主线程处理数据,另一个线程读取数据。
      运行相关代码,可更好地理解线程和队列
    FIFOQueue和RandomShuffleQueue两种队列
    tensorflow入门:tfrecord 和tf.data.TFRecordDataset
      介绍了TFread数据保存和读取
      tips:
      tf.TFRecordReader VS tf.data.TFRecordDataset
      tf.TFRecordReader()可能会弃用,官方推荐用tf.data读取TFRecord

dataset Iterator
  创建一个迭代器保证每次可以获取到一batch的数据

  • one shot iterator 即只能从头到尾读取一次
  • dataset = dataset.shuffle(buffersize=1000).batch(32).repeat(10)是将一个epoch打乱的数值重复10次
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值