#一、准备数据
CIFAR-10 是由 Hinton 的学生 Alex Krizhevsky 和 Ilya Sutskever 整理的一个用于识别普适物体的小型数据集。一共包含 10 个类别的 RGB 彩色图 片:飞机( airplane )、汽车( automobile )、鸟类( bird )、猫( cat )、鹿( deer )、狗( dog )、蛙类( frog )、马( horse )、船( ship )和卡车( truck )。图片的尺寸为 32×32 ,数据集中一共有 50000 张训练图片和 10000 张测试图片。 CIFAR-10 的图片样例如图所示。
CIFAR-2为CIFAR-10数据集的子集,只包括前两种类别airplane和automobile。训练集有airplane和automobile图片各5000张,测试集有airplane和automobile图片各1000张。cifar2任务的目标是训练一个模型来对飞机airplane和机动车automobile两种图片进行分类。我们准备的Cifar2数据集的文件结构如下所示。
在tensorflow中准备图片数据的常用方案有两种,第一种是使用tf.keras中的ImageDataGenerator工具构建图片数据生成器。
第二种是使用tf.data.Dataset搭配tf.image中的一些图片处理方法构建数据管道。
第一种方法更为简单,其使用范例可以参考以下文章。
《Keras图像数据预处理范例——Cifar2图片分类》
第二种方法是TensorFlow的原生方法,更加灵活,使用得当的话也可以获得更好的性能。我们此处介绍第二种方法。
#二、定义模型
使用Keras接口有以下3种方式构建模型:
- 使用Sequential按层顺序构建模型
- 使用函数式API构建任意结构模型
- 继承Model基类构建自定义模型
此处选择使用函数式API构建模型。
#三、训练模型
#四、评估模型
#五、使用模型
#六、保存模型