TensorFlow基础5:TFRecords文件的存储与读取讲解及代码实现

上篇文章中我梳理一下在TensorFlow中几种不同类型数据读取的流程,但是没有具体说到TFRecords这种文件类型,这篇文章就来具体梳理这一文件格式。

TFRecords是TensorFlow中的设计的一种内置的文件格式,它是一种二进制文件,优点有如下几种:

  • 统一不同输入文件的框架
  • 它是更好的利用内存,更方便复制和移动(TFRecord压缩的二进制文件, protocal buffer序列化)
  • 是用于将二进制数据和标签(训练的类别标签)数据存储在同一个文件中

一、TFRecords存储

在将其他数据存储为TFRecords文件的时候,需要经过两个步骤:

  • 建立TFRecord存储器
  • 构造每个样本的Example模块
1、建立TFRecord存储器

tf.python_io.TFRecordWriter(path)

  • 写入tfrecords文件
  • path : TFRecords文件的路径
  • return : 写文件
  • 方法:
    • write(record):向文件中写入一个字符串记录(即一个样本)
    • close() : 关闭文件写入器

注:此处的字符串为一个序列化的Example,通过Example.SerializeToString()来实现,它的作用是将Example中的map压缩为二进制,节约大量空间。

2、构造每个样本的Example协议块
message Example {
  Features features = 1;
};

message Features {
  map<string, Feature> feature = 1;
};

message Feature {
  oneof kind {
    BytesList bytes_list = 1;
    FloatList float_list = 2;
    Int64List int64_list = 3;
  }
};

上面这段代码即为Example协议块的规则,详解如下:
(1)tf.train.Example(features = None)

  • 写入tfrecords文件
  • features : tf.train.Features类型的特征实例
  • return : example协议格式块

(2)tf.train.Features(feature = None)

  • 构造每个样本的信息键值对
  • feature : 字典数据,key为要保存的名字,value为tf.train.Feature实例
  • return : Features类型

(3)tf.train.Feature(**options)
options可以选择如下三种格式数据:

  • bytes_list = tf.train.BytesList(value = [Bytes])
  • int64_list = tf.train.Int64List(value = [Value])
  • float_list = tf.trian.FloatList(value = [Value])

(4)将图片数据转化为TFRecords的例子:
对每一个样本,都做如下的处理:

example = tf.train.Example(feature = tf.train.Features(feature = {
                            "image":tf.train.Feature(bytes_list=tf.train.BytesList(value=[image(bytes)]))
                             "label":tf.train.Feature(int64_list=tf.train.Int64List(value=[label(int)]))
    }))

二、TFRecords读取方法

1.流程:

和文件阅读器的流程基本相同,只是中间多了一步解析过程

2.解析TFRe
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值