1 问题
关于MINIST数据集?用“横纵式”极简实现方案快速完成手写数字识别的建模?
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 结语
这次实验我们深入了解和扩展了一些关于手写数字的步骤和方法,过程中困难重重,但好在有老师和同学们的帮助也算顺利解答了疑惑。