-
idx3-ubyte
表示这是一个三维数组的 ubyte (unsigned byte) 格式数据(图片数据)。 -
idx1-ubyte
表示这是一个一维数组的 ubyte 格式数据(标签)。
train-images-idx3-ubyte
文件按照以下格式保存:
1.文件头
-
前 4 个字节表示魔数
0x00000803
(以小端字节序存储),表示 3 维数组的 ubyte 格式。 -
接下来 4 个字节表示图像数量
60000
。 -
再接下来 4 个字节表示行数
28
。 -
最后 4 个字节表示列数
28
。
2.图像数据
-
文件头之后的数据部分就是所有图像的像素值。
-
每个图像的像素值是按照行优先的顺序依次存储的。
-
每个像素值都是一个 8 位无符号整数(0-255)。
import struct
import numpy as np
import matplotlib.pyplot as plt
def load_mnist_images(filename):
"""
读取 MNIST 图像文件并返回图像数据
"""
with open(filename, 'rb') as f:
# 读取文件头信息
magic, num_images, rows,