用于 CIFAR10 数据的 LeNet
现在我们已经学会了使用 TensorFlow 和 Keras 的 MNIST 数据集构建和训练 CNN 模型,让我们用 CIFAR10 数据集重复练习。
CIFAR-10 数据集包含 60,000 个 32x32 像素形状的 RGB 彩色图像。图像被平均分为 10 个不同的类别或类别:飞机,汽车,鸟,猫,鹿,狗,青蛙,马,船和卡车。 CIFAR-10 和 CIFAR-100 是包含 8000 万个图像的大图像数据集的子集。 CIFAR 数据集由 Alex Krizhevsky,Vinod Nair 和 Geoffrey Hinton 收集和标记。数字 10 和 100 表示图像类别的数量。
有关 CIFAR 数据集的更多详细信息,请访问以下链接:http://www.cs.toronto.edu/~kriz/cifar.html 和 http://www.cs.toronto.edu/~kriz/learning-features-2009-TR.pdf.
我们选择了 CIFAR 10,因为它有 3 个通道,即图像的深度为 3,而 MNIST 数据集只有一个通道。 为了简洁起见,我们将详细信息留给下载并将数据拆分为训练和测试集,并在本书代码包中的 datasetslib 包中提供代码。
您可以按照 Jupyter 笔记本中的代码ch-09b_CNN_CIFAR10_TF_and_Keras
。
我们使用以下代码加载和预处理 CIFAR10 数据:
from datasetslib.cifar import cifar10
from datasetslib import imutil
dataset = cifar10()
dataset.x_layout=imutil.LAYOUT_NHWC
dataset.load_data()
dataset.scaleX()
加载数据使得图像采用'NHWC'
格式,使数据变形(number_of_samples, image_height, image_width, image_channels
)。我们将图像通道称为图像深度。图像中的每个像素是 0 到 255 之间的数字。使用 MinMax 缩放来缩放数据集,以通过将所有像素值除以 255 来标准化图像。
加载和预处理的数据在数据集对象变量中可用作dataset.X_train
,dataset.Y_train
,dataset.X_test
和dataset.Y_test
。