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,来创建更精美的图像。