手写数字数据集MNIST

时间:2024-11-11 08:27:39

文章目录

  • 一、 简介
  • 二、下载MNIST数据集
    • 训练集和测试集的长度
    • 输出图像数据和标记数据的形状
    • 显示手写数字图片
      • 输出数据集中的第1个样本
      • 显示图片

一、 简介

MNIST是一个非常有名的手写体数字识别数据集(手写数字灰度图像数据集),在很多资料中,这个数据集都会被用作深度学习的入门样例。

MNIST数据集是由0到9的数字图像构成的。训练图像有6万张,测试图像有1万张。MNIST数据集是NIST数据集的一个子集,它包含了60000张图片作为训练数据,10000张图片作为测试数据。由250个不同的人手写而成。

每一张图片都有对应的标签数字,训练图像一共有60000 张,供研究人员训练出合适的模型。测试图像一共有10000 张,供研究人员测试训练的模型的性能。

这些手写图片都是2828像素,灰度图像。
在这里插入图片描述
但是它们并不是作为图像文件存储的,而是28
28的二维数组中。数组中的每个元素对应数组中的每个像素。
在这里插入图片描述
MNIST已经在keras内置模块里,因此可以直接使用keras的datesets来访问它。

二、下载MNIST数据集

import tensorflow as tf

minist = tf.keras.datasets.mnist
(train_x, train_y), (test_x, test_y) = minist.load_data()

下载中
在这里插入图片描述
下载完成
在这里插入图片描述
下载路径
C:\Users\dell\.keras\datasets\

训练集和测试集的长度

print("Training set:", len(train_x))
print("Testing set:", len(test_x))

在这里插入图片描述

输出图像数据和标记数据的形状

print("train_x", train_x.shape, train_x.dtype)
print("train_y", train_y.shape, train_y.dtype)

运行结果
在这里插入图片描述

显示手写数字图片

输出数据集中的第1个样本

train[0]

在这里插入图片描述
一个28×28的二位数组,因为比较长,所以这里省略了中间的部分。数组中的每个元素对应图像中的一个像素,由于图片的背景是黑色,因此数组中有大量的0数值不为0的元素就是手写数字的笔画,主要集中在图片的中间。
在这里插入图片描述

显示图片

我们可以以图像的形式显示出来

import matplotlib.pyplot as plt
plt.axis("off")
plt.imshow(train_x[0], cmap="gray")
plt.show()

运行结果
在这里插入图片描述
下面输出这个图片的标签

train_y[0]
# 5

例:随机显示4幅手写数字图片

for i in range(4):
    num = np.random.randint(1, 60000)

    plt.subplot(1, 4, i+1)
    plt.axis("off")
    plt.imshow(train_x[num], cmap="gray")
    plt.title(train_y[num])

plt.show()

运行结果
在这里插入图片描述