一、什么是TFRecords文件
1、TFRecords其实是一种二进制文件,虽然它不如其他格式好理解,但是它能更好的利用内存,更方便复制和移动,并且不需要单独的标签文件
2、使用步骤
(1)获取数据
(2)将数据填入到Example协议内存块(protocol buffer)
(3)将协议内存块序列化为字符串,并且通过tf.io.TFRecordWriter写入到TFRecords文件
3、文件格式*.tfrecords
二、Example结构解析
1、Example
python
features {
feature {
key: "image"
value {
bytes_list {
value: "\377\374\375\372\356\351\365\31\350\356\352\350"
}
}
}
feature {
key: "lable"
value {
int64_list {
value: 9
}
}
}
}
特征值 - image - 3072字节
目标值 - label - 1个字节
说明:
(1)tf.train.Example
协议内存块(protocol buffer)(协议内存块包含了字段features)
(2)features
包含了feature字段
(3)feature
中包含要写入的数据、并指明数据类型
2、相关对象
tf.train.Example(features=None)
说明:
(1)写入tfrecords文件
(2)features:tf.train.Features类型的特征实例
(3)return:example格式协议块
tf.train.Features(feature=Nona)
说明:
(1)构建每个样本的信息键值对
(2)feature:字段数据,key为要保存的名字,value为tf.train.Feature实例
(3)return:Features实例
tf.train.Feature(options)
说明:
(1)options
bytes_list=tf.train.BytesList(value=[Bytes])
int64_list=tf.train.Int64List(value=[Value])
float_list=tf.train.FloatList(value=[Value])
(2)支持存入的类型如下
tf.train.BytesList(value=[Bytes])
tf.train.Int64List(value=[Value])
tf.train.FloatList(value=[Value])
3、一个样本的对象
python
example = tf.train.Example(features=tf.train.Features(feature={"image":tf.train.Feature(bytes_list=tf.train.BytesList(value=[image])"label":tf.train.Feature(int64_list=tf.train.Int64List(value=[label])))}))
三、CIFAR-10数据存入TFRecords文件
四、读取TFRecords文件API
五、读取CIFAR的TFRecords文件