返回

浅谈初学者如何认识MNIST数据集以及如何切割可视化

前端

如今,人工智能技术已经渗透到我们生活的方方面面,机器学习作为人工智能领域的重要组成部分,也备受关注。机器学习入门通常从识别手写数字开始,而MNIST数据集是机器学习领域中经典的数据集之一,它包含了60,000张手写数字图片,这些图片的大小都是28*28像素。

在对MNIST数据集进行训练之前,我们需要先将图片的可视化,以便于我们更好地理解数据。

首先,我们需要在src目录下新建一个data/mnist文件夹,并将MNIST数据集的内容放入其中。MNIST数据集包含两个文件:mnist_images.png和mnist_labels.csv,mnist_images.png是所有手写数字图片的集合,而mnist_labels.csv则是这些图片对应的标签。

接下来,我们需要使用Python中的PIL库读取mnist_images.png图片。PIL库是一个功能强大的图像处理库,它可以读取、修改和保存各种格式的图片。

from PIL import Image
import numpy as np

# 读取mnist_images.png图片
image = Image.open('data/mnist/mnist_images.png')

然后,我们需要将图片切割成28*28的小图片。我们可以使用PIL库的crop()方法来实现这一点。

# 将图片切割成28*28的小图片
images = []
for i in range(0, 28):
    for j in range(0, 28):
        # 从图片中切割出第i行第j列的28*28的小图片
        image_crop = image.crop((i*28, j*28, (i+1)*28, (j+1)*28))
        # 将小图片转换为NumPy数组
        image_array = np.array(image_crop)
        # 将NumPy数组添加到列表中
        images.append(image_array)

最后,我们需要使用NumPy和Matplotlib将这些小图片可视化成图片。

import matplotlib.pyplot as plt

# 将列表中的小图片可视化成图片
fig, axs = plt.subplots(10, 10, figsize=(10, 10))
axs = axs.ravel()
for i in range(100):
    axs[i].imshow(images[i], cmap='gray')
    axs[i].axis('off')

# 显示图片
plt.show()

通过上面的代码,我们可以将MNIST数据集中的图片切割成28*28的小图片,并将其可视化成图片。这有助于我们更好地理解数据,并为后续的训练做准备。