写文件
这里的写, 指的是把各种格式的数据(如字符, 图片等)统一转换成Tensorflow
的标准支持格式TFRecord
.
TFRecord是输入数据统一管理的格式, 它其实是一种二进制文件.
写入:
通过将数据填入到tf.train.Example
类,Example
的protocol buffer
包含了字段的tf.train.Features
, 使用数据修改Features, 实现将protocol buffer
序列化成一个字符串, 再通过tf.python_io.TFRecordWriter
类将序列化的字符串写入到TFRecord
中.读出:
使用tf.TFRecordReader
读取器, 通过tf.parse_single_example
解析器解析,parse_single_example
操作可以将Example
protocol buffer
解析为张量, 然后用解码器tf.decode_raw
解码.
相关类/函数
tf.python_io.TFRecordWriter
把记录写入到TFRecords文件的类.
- init()
''' 作用: 创建一个TFRecordWriter对象, 将数据记录到指定的TFRecord文件中. 参数: path: (must)TFRecords文件的路径; options: TFRecordOptions对象; '''
- write()
''' 作用: 将一条序列化字符串记录写入到文件中. 参数: record: string, 序列化字符串记录. '''
- close()
''' 作用: 关闭TFRecordWriter. '''
-
Example是使用某种规则规则化后的数据, 通过使用TFRecordWriter写入到TFRecord中.
Example包含一个键值对数据结构(与dict相同), 使用属性features记录, 因此, 初始化时必须传入这个features参数, 它是一个tf.train.Features对象.
- init()
''' 作用: 初始化一个Example. 参数: features: tf.train.Features对象, 其中每条记录的key表示数据的描述, value为固定数据类型的特殊处理的数据. '''
- SerializeToString()
''' 作用: 把这个Example序列化成字符串, 将这个字符串通过TFRecordWriter写入到TFRecord中. '''
-
协议化的描述数据信息, 结构为键值对, key为字符串, 用来描述数据, value为tf.train.Feature对象, 一个Feature包含一种数据类型的list, list中有若干数据.
list有三种:
BytesList
,FloatList
,Int64List
- init()
''' 作用: 初始化一个Features 参数: feature: dict字典, key为数据名称, value为tf.train.Feature对象, 特殊的数据list. ''' tf.train.Features(feature={ "image_raw":tf.train.Feature(bytes_list=tf.train.BytesList(value=[image_raw])),