1 问题
2 方法
MINIST 数据集包含60000个训练集与10000个测试集。数据集分为图片与标签,其中图片是28*28的像素矩阵,标签为 0~9 共10个数字。
步骤:
在数据处理前,首先要加载飞桨平台与“手写数字识别”模型相关的类库,实现方法如下。
#加载飞桨和相关类库 import paddle import paddle.fluid as fluid from paddle.fluid.dygraph.nn import Linear import numpy as np import os from PIL import Image
batch函数将MNIST数据集拆分成多个批次,通过如下代码读取第一个批次的数据内容,观察数据打印结果。
# 以迭代的形式读取数据 for batch_id, data in enumerate(train_reader()): # 获得图像数据,并转为float32类型的数组 img_data = np.array([x[0] for x in data]).astype('float32') # 获得图像标签数据,并转为float32类型的数组 label_data = np.array([x[1] for x in data]).astype('float32') # 打印数据形状 print("图像数据形状和对应数据为:", img_data.shape, img_data[0]) print("图像标签形状和对应数据为:", label_data.shape, label_data[0]) break print("\n打印第一个batch的第一个图像,对应标签数字为{}".format(label_data[0])) # 显示第一batch的第一个图像 import matplotlib.pyplot as plt img = np.array(img_data[0]+1)*127.5 img = np.reshape(img, [28, 28]).astype(np.uint8) plt.figure("Image") # 图像窗口名称 plt.imshow(img) plt.axis('on') # 关掉坐标轴为 off plt.title('image') # 图像题目 plt.show()
3 结语
这次实验我们深入了解和扩展了一些关于手写数字的步骤和方法,过程中困难重重,但好在有老师和同学们的帮助也算顺利解答了疑惑。