优草派  >   Python

MNIST数据集转化为二维图片的实现示例

刘国华            来源:优草派

MNIST数据集是一个经典的手写数字识别数据集,由于其简单易用,一直是深度学习入门的首选数据集之一。在进行模型训练之前,通常需要将MNIST数据集转化为二维图片格式,以便于进行可视化和处理。本文将介绍如何使用Python实现MNIST数据集转化为二维图片的过程。

1. 数据集介绍

MNIST数据集转化为二维图片的实现示例

MNIST数据集包含了6万张训练图片和1万张测试图片,每张图片都是28x28像素的灰度图像。每个像素的取值范围是0到255,代表了灰度值的强度。每个图片都对应一个0到9的数字标签,代表了这个手写数字的真实值。下面是MNIST数据集中的几个样例图:

![mnist.png](https://cdn.cosx.org/wp-content/uploads/2022/05/mnist.png)

2. 数据集下载

MNIST数据集可以在官网上进行下载,也可以使用Python的库直接下载。下面是使用Keras库下载MNIST数据集的示例代码:

```python

from keras.datasets import mnist

# 加载MNIST数据集

(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

# 显示训练集中第一张图片的灰度矩阵

print(train_images[0])

```

输出结果:

```

array([[0, 0, 0, ..., 0, 0, 0],

[0, 0, 0, ..., 0, 0, 0],

[0, 0, 0, ..., 0, 0, 0],

...,

[0, 0, 0, ..., 0, 0, 0],

[0, 0, 0, ..., 0, 0, 0],

[0, 0, 0, ..., 0, 0, 0]], dtype=uint8)

```

3. 数据集预处理

将MNIST数据集转化为二维图片的过程需要进行一些预处理。首先,我们需要将所有的像素值除以255,将其归一化到0到1的范围内,以便于后续处理。其次,我们需要将每个28x28的灰度矩阵转化为一个28x28x1的三维矩阵。这样做的原因是,深度学习模型通常需要输入三维的张量数据,其中最后一维代表着通道数。对于灰度图像来说,通道数为1。下面是对MNIST数据集进行预处理的示例代码:

```python

import numpy as np

# 将像素值除以255,归一化到0到1的范围内

train_images = train_images.astype('float32') / 255

test_images = test_images.astype('float32') / 255

# 将灰度矩阵转化为三维张量

train_images = np.expand_dims(train_images, axis=-1)

test_images = np.expand_dims(test_images, axis=-1)

# 显示训练集中第一张图片的三维张量

print(train_images[0])

```

输出结果:

```

array([[[0.],

[0.],

[0.],

...,

[0.],

[0.],

[0.]],

[[0.],

[0.],

[0.],

...,

[0.],

[0.],

[0.]],

[[0.],

[0.],

[0.],

...,

[0.],

[0.],

[0.]],

...,

[[0.],

[0.],

[0.],

...,

[0.],

[0.],

[0.]],

[[0.],

[0.],

[0.],

...,

[0.],

[0.],

[0.]],

[[0.],

[0.],

[0.],

...,

[0.],

[0.],

[0.]]], dtype=float32)

```

4. 数据集可视化

将MNIST数据集转化为二维图片之后,我们可以使用matplotlib库对其进行可视化。下面是对训练集中前25张图片进行可视化的示例代码:

```python

import matplotlib.pyplot as plt

# 将三维张量转化为二维灰度图像

def to_grayscale(image):

return np.squeeze(image, axis=-1)

# 绘制灰度图像

def plot_images(images, labels):

fig, axs = plt.subplots(5, 5, figsize=(10, 10))

axs = axs.flatten()

for i in range(len(images)):

axs[i].imshow(to_grayscale(images[i]), cmap='gray')

axs[i].axis('off')

axs[i].set_title(str(labels[i]))

plt.show()

# 显示训练集中前25张图片

plot_images(train_images[:25], train_labels[:25])

```

输出结果:

![mnist-visualization.png](https://cdn.cosx.org/wp-content/uploads/2022/05/mnist-visualization.png)

5. 总结

本文介绍了如何使用Python将MNIST数据集转化为二维图片的过程。首先,我们下载了MNIST数据集并进行了预处理,将灰度矩阵转化为三维张量。然后,我们使用matplotlib库对数据集进行了可视化,将三维张量转化为二维灰度图像。通过本文的介绍,读者可以了解到MNIST数据集的基本信息,并学会如何将其转化为深度学习模型可以处理的格式。

【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。
TOP 10
  • 周排行
  • 月排行