huggingface 的 mnist 数据集的使用

由于原始的地址设置了登陆权限,所以,选择 huggingface 的 mnist 数据集使用。

数据装载

首先到 hf 网站下载相关数据集,地址是 ylecun/mnist, 然后在安装 hf 设计的数据集加载套件 datasets 工具包。
用 huggingface提供的工具下载到本地目录
huggingface-cli download --repo-type dataset ylecun/mnist --local-dir ylecun/mnist

调用

import numpy as np
from datasets import load_dataset
import matplotlib.pyplot as plt

dataset = load_dataset('ylecun/mnist')
train_data = dataset['train']
first_image = train_data[0]
image = first_image['image']
image_array = np.array(image)
plt.imshow(image_array, cmap='gray')
plt.show()

解读

1. 导入必要的库:

from datasets import load_dataset
import numpy as np
import matplotlib.pyplot as plt
  • datasets: 用来加载数据集。
  • numpy: 用于处理数值数组。
  • matplotlib: 用于绘制图像。

2. 加载数据集并获取第一个样本:

dataset = load_dataset("ylecun/mnist")
train_dataset = dataset['train']
first_sample = train_dataset[0]

3. 打印图像和标签:

# 打印标签
print("Label:", first_sample['label'])

# 获取图像数据
image = first_sample['image']

# 将图像数据转换为NumPy数组,并展示其形状
image_array = np.array(image)
print("Image shape:", image_array.shape)

# 绘制图像
plt.imshow(image_array, cmap='gray')
plt.show()

4. 打印图像的数字表示(像素值):

# 打印图像的前几行像素值
print("First few rows of pixel values:")
print(image_array[:5, :5])

代码解释

  • 图像数据: 在 MNIST 数据集中,图像通常以 NumPy 数组的形式存储,每个元素表示一个像素的灰度值。
  • 图像形状: image_array.shape 显示了图像的高度、宽度和通道数。对于灰度图像,通道数通常为1。
  • 绘制图像: plt.imshow 函数将 NumPy 数组绘制成图像。
  • 打印像素值: 可以直接打印 NumPy 数组的部分元素来查看像素值。

完整代码示例

from datasets import load_dataset
import numpy as np
import matplotlib.pyplot as plt

dataset = load_dataset("ylecun/mnist")
train_dataset = dataset['train']
first_sample = train_dataset[0]

print("Label:", first_sample['label'])

image = first_sample['image']
image_array = np.array(image)
print("Image shape:", image_array.shape)

plt.imshow(image_array, cmap='gray')
plt.show()

print("First few rows of pixel values:")
print(image_array[:5, :5])

进一步分析

  • 像素值范围: MNIST 图像的像素值通常在 0 到 255 之间,表示不同程度的灰度。
  • 数据预处理: 在进行深度学习训练之前,通常需要对图像数据进行归一化、标准化等预处理。
  • 其他操作: 除了打印像素值,还可以计算图像的统计特征(如平均值、方差),或者对图像进行一些变换(如旋转、缩放)。

拓展

  • 查看其他样本: 可以通过改变索引来查看其他样本。
  • 保存图像: 可以使用 plt.imsave 函数将图像保存为文件。
  • 自定义可视化: 可以使用更复杂的可视化库,如 Seaborn,来创建更精美的图像。
posted @ 2024-09-17 13:59  立体风  阅读(52)  评论(0编辑  收藏  举报