Press "Enter" to skip to content

TensorFlow2 如何构建自己的数据集?

1.背景说明

 

我们平时在网上看到的有关深度学习的案例大多使用处理好、教规格的数据集,如MNIST, CIFAR10/100等数据集,这些数据集基本可以直接导入模型中,无需(或很少)预处理。但是一般情况下我们的数据集并不是这种很规范的数据,如何把自己的数据集转换成这些框架能够使用的数据形式至关重要,接下来将对TensorFlow2中官方推荐数据格式及预处理方法进行说明,小数据集处理方法很多,处理也比较方便,这里就不展开来说。这里主要介绍大中数据集,对大中数据集TensorFlow建议转换为TFRecord格,使用TFRecord格式有哪些优势呢?

 

2.使用TFRecord的优势

 

正常情况下我们用于训练的文件夹内部往往会存着成千上万的图片或文本等文件,这些文件通常被散列存放。这种存储方式有一些缺点:

 

(1)占用磁盘空间;

 

(2)在一个个读取的时候会非常耗时;

 

(3)占用大量内存空间(有的大型数据不足以一次性加载)。

 

此时 TFRecord 格式的文件存储形式会很合理的帮我们存储数据。TFRecord 内部使用了 “Protocol Buffer” 二进制数据编码方案,它只占用一个内存块,只需要一次性加载一个二进制文件的方式即可,简单,快速,尤其对大型训练数据很友好。而且当我们的训练数据量比较大的时候,可以将数据分成多个 TFRecord 文件,来提高处理效率。

 

3.使用TFRecord的一般步骤

 

 

3.1 Exmple含义

 

Example含义:如下图,假设有样本 (example):(x,y):输入x 和正确的输出y一起叫做样本。给网络展示了什幺输入该产生什幺样的输出。这里每个x是五维向量,每个y是一维向量。

3.2 TFRecord文件数据格式

 

 

3.3 加载TFRecord文件流程

 

TFRecord做好了,可以通过tf.data来生成一个迭代器,每次调用都返回一个大小为batch_size的batch。读取TFRecord可以通过tensorflow两个个重要的函数实现如下图所示,分别是读取器(Reader): tf.data.TFRecordDataset和解码器(Decoder):tf.io.parse_single_example解析器。如下图:

 

 

4.代码实例(即将完成)

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注