优草派 > 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数据集的基本信息,并学会如何将其转化为深度学习模型可以处理的格式。

  • 微信好友

  • 朋友圈

  • 新浪微博

  • QQ空间

  • 复制链接

取消
5天短视频训练营
新手入门剪辑课程,零基础也能学
分享变现渠道,助你兼职赚钱
限时特惠:0元
立即抢
新手剪辑课程 (精心挑选,简单易学)
第一课
新手如何学剪辑视频? 开始学习
第二课
短视频剪辑培训班速成是真的吗? 开始学习
第三课
不需要付费的视频剪辑软件有哪些? 开始学习
第四课
手机剪辑app哪个好? 开始学习
第五课
如何做短视频剪辑赚钱? 开始学习
第六课
视频剪辑接单网站APP有哪些? 开始学习
第七课
哪里可以学短视频运营? 开始学习
第八课
做短视频运营需要会什么? 开始学习
【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。

客服热线:0731-85127885

湘ICP备19005950号-1  

工商营业执照信息

违法和不良信息举报

举报电话:0731-85127885 举报邮箱:tousu@csai.cn

优草派  版权所有 © 2024