作为图像识别与机器视觉界的 “hello world!” ,
MNIST (“Modified National Institute of Standards and Technology”)
数据集有着举足轻重的地位。基本上每本人工智能、机器学习相关的书上都以它作为开始。
下面我们会用 TensorFlow 搭建一个浅层的神经网络来运行 “hello world!” 模型。 以下内容和模块的运算,均在矩池云平台进行。
本次教程分五步:
第一步:数据预处理,包括提取数据标签、查看图片数据、数据可视化、查看数据是否平衡等
第二步:数据加载,打乱数据集
第三步:构建模型,简单介绍网络卷积模型和激活函数,定义训练函数和学习率
第四步:模型训练,查看训练过程和结果,使用图表查看模型精确度和学习率变化
第五步:尝试提升精准度,不断探索和优化
在搭建开始前,我们需要加载以下对应的模块:
第一步:数据预处理
1.1查看数据标签
在任何模型建立之前,应当优先查看数据的情况。例如数据集的大小、训练集和测试集的数据数量、标签的数据数量分布等。
下方为训练集和测试集的数据查看代码:
train = pd.read_csv('mnist/mnist_train.csv') # read train
test = pd.read_csv('mnist/mnist_test.csv') # read train
下方为训练集和测试集的数量结果:
train.shape (6000,785)
test.shape (10000,785)
我们可以看到 train 训练集里面有6000条数据,test 测试集里面有10000条数据,两个测试集每行都有785个数据。
接下来,我们来看下数据集的预览:其中第一列是标签列,剩余784列则为像素点数据,由该784列数据组成一张28*28的像素图片。
1.2 提取数据标签
接下来,我们进行数据标签的提取和处理。先来看下标签数据的提取代码:
train_labels = np.array(train.pop('label'))
test_labels = np.array(test.pop('label'))
查看标签种类,我们可以看出标签表示了从0~9的数字,没有其他的错误数据。
由于运算需要,我们需要将一维的图片数据转换成二维图片数据。将图片数据转换成长28,宽28,通道为1的格式,方便卷积计算。