编程技术网

关注微信公众号,定时推送前沿、专业、深度的编程技术资料。

 找回密码
 立即注册

QQ登录

只需一步,快速开始

极客时间

使用 Sequential API 构建图像分类器

mycode 深度学习 2021-11-29 15:43 203人围观

腾讯云服务器

使用 Sequential API 构建图像分类器

首先,我们需要加载数据集。在本章中,我们将讨论 Fashion MNIST,它是 MNIST 的直接替代品(在第 3 章中介绍)。它的格式与 MNIST 完全相同(70,000 张灰度图像,每张 28 × 28 像素,有 10 个类别),但图像代表的是时尚单品而不是手写数字,因此每个类别更加多样化,问题变得明显比 MNIST 更具挑战性。例如,一个简单的线性模型在 MNIST 上的准确率达到了大约 92%,但在 Fashion MNIST 上只有大约 83%。

使用 Keras 加载数据集

凯拉斯提供了一些实用函数来获取和加载常见数据集,包括 MNIST、Fashion MNIST 和我们在第 2 章中使用的加州住房数据集让我们加载时尚 MNIST:

fashion_mnist = keras.datasets.fashion_mnist
(X_train_full, y_train_full), (X_test, y_test) = fashion_mnist.load_data()

当使用 Keras 而不是 Scikit-Learn 加载 MNIST 或 Fashion MNIST 时,一个重要的区别是每张图像都表示为 28 × 28 数组而不是大小为 784 的一维数组。此外,像素强度表示为整数(从 0到 255)而不是浮动(从 0.0 到 255.0)。我们来看看训练集的形状和数据类型:

>>> X_train_full.shape
(60000, 28, 28)
>>> X_train_full.dtype
dtype('uint8')

请注意,数据集已经分为训练集和测试集,但没有验证集,因此我们现在创建一个。此外,由于我们将使用梯度下降训练神经网络,我们必须缩放输入特征。为简单起见,我们将像素强度除以 255.0(这也将它们转换为浮点数)将像素强度缩小到 0-1 范围:

X_valid, X_train = X_train_full[:5000] / 255.0, X_train_full[5000:] / 255.0
y_valid, y_train = y_train_full[:5000], y_train_full[5000:]
X_test = X_test / 255.0

使用MNIST,当label等于5时,表示图像代表手写数字5。容易。然而,对于 Fashion MNIST,我们需要类名列表来了解我们正在处理的内容:

class_names = ["T-shirt/top", "Trouser", "Pullover", "Dress", "Coat",
               "Sandal", "Shirt", "Sneaker", "Bag", "Ankle boot"]

例如,训练集中的第一幅图像代表一件外套:

>>> class_names[y_train[0]]
'Coat'

图 10-11显示了来自 Fashion MNIST 数据集的一些示例。

mls2 1011
图 10-11。来自时尚 MNIST 的样本
腾讯云服务器 阿里云服务器
关注微信
^