本人是深度学习的爱好者,最近在参加cv的表情识别训练,把一些步骤和过程记录下来
一.什么是TFRecord
对于计算机的内存来说,我们训练集样本的数目是巨大的,而且这些文件分散在不同的文件夹中,在存读取的过程中会耗费大量的时间和硬盘资源,此时就需要我们用TFRecord的储存格式来帮助存储数据。
protuBuf
TFRecord使用了名为“Protocol Buffer”二进制数据编码方案,它一次性只加载一个二进制文件,在训练数据很多的时候十分方便快捷。并且我们可以对不同的文件夹下的子文件分别生成TFRecord,十分方便。
二.声明tfRecord
首先我们要生成一个TFRecord形式的实例
writer=tf.python_io.TFRecordWriter(filename)
image=Image.open(filename)
然后将图片转化为TFRecord存入特征需要的二进制格式,因为人脸训练表情分为图像和分类标志两类,所以分别以bytesList和Int64List的形式存储到feature参数中(feature是字典格式),最后将其序列化转换为字符串,写入TFRecord中。
image_bytes=image.tobytes()
features={}
features['image']=tf.train.Feature(bytes_list=tf.train.BytesList(value=[image_bytes]))
features['label']=tf.train.Feature(int64_list=tf.tr