本文涉及TensorFlow的两个组件:
- TFRecordReader
- TFRecordWriter
TFRecords是TensorFlow专门的文件存储和读取格式。这是TensorFlow专门提供的、允许任意数据转化成TensorFlow所支持的格式,使得相应的数据集更容易与网络应用架构相匹配。
--------------------------------------------------------------------------------
详解:
【TFRecordReader】(TFRecords的读取)
(TODO)
【TFRecordWriter】(TFRecords的保存):
例:读取硬盘上图片文件将其保存为TFRecords
import os import tensorflow as tf from PIL import Image path = '.\data\jpg' filename = os.listdir(path) writer = tf.python_io.TFRecordWriter("train.tfrecords") for name in os.listdir(path): class_path = path + os.sep + name for img_name in os.listdir(class_path): img_raw = Image.open(class_path + os.sep + img_name).resize((500, 500)).tobytes() example = tf.train.Example(features=tf.train.Features(feature={ "lable": tf.train.Feature(int64_list=tf.train.Int64List(value=[int(name)])), "image": tf.train.Feature(bytes_list=tf.train.BytesList(value=[img_raw])) })) writer.write(example.SerializeToString())
新方法 | 描述 |
tf.train.BytesList(value=[]) | 字节列表 |
tf.train.FloatList(value=[]) | 浮点数列表 |
tf.train.Int64List(value=[]) | 整形数列表 |
tf.train.Feature(bytes_list=) tf.train.Feature(float_list=) tf.train.Feature(int64_list=) | 任何一个Feature中包含BytesList,或者FloatList,或者Int64List |
tf.train.Features(feature={}) | 一个Features中包含着Feature字典 |
tf.train.Example(features=) | 一个Example包含若干个Features |
tf.python_io.TFRecordWriter(example.SerializeToString()) | TFRecords能够保存的只能是二进制数据,因此必须要有一个专门的将数据转化成二进制式 |