MNIST数据集一共有七万张图片,其中六万张是训练集,一万张是测试集。每一张是784(28 x 28)字节的0~9的数字,黑底白字。
在网上以及文章中找到的MNIST训练集内部文件结构:
1 2 3 4 5 6 7 8 9 10
TRAINING SET LABEL FILE (train-labels-idx1-ubyte): [offset] [type] [value] [description] 0000 32 bit integer 0x00000801(2049) magic number (MSB first) 0004 32 bit integer 60000 number of items 0008 unsigned byte ?? label 0009 unsigned byte ?? label ........ xxxx unsigned byte ?? label The labels values are 0 to 9.
可以看到里面有6万个标签,每个标签的值为一个0~9的数字。
首先该数据集是二进制文件,所以是以rb的方式读取,而且真正的数据在value的这项里。在读取数据时,首先要读取4个32位int,分别是magic number、number of image、number of rows、number of columns。
for epoch inrange(30): train_num = train_length//batch_size #计算有多少批次数
train_loss = 0#损失函数的统计 for i in tqdm(range(train_num)): #开始训环训练 x_imgs_batch = [] x_step_batch = [] y_batch = [] #对每个批次内的数据进行处理 for b inrange(batch_size): img = x_train[np.random.randint(x_train.shape[0])] #提取单个图片内容 x = img y = img