这篇文章将会分成两个部分,第一部分将简单认识一下keras中的手写数据集MNIST,第二部分将会介绍用Keras建立多层感知器模型,然后训练模型,评估模型的准确率,最后用训练完成的模型识别MNIST的手写数字。
1.MNIST简介
MNIST是深度学习的经典入门demo,它是由Yann LeCun搜集的,这个demo是由6万张训练图片和1万张测试图片构成的,每张图片都是28px*28px大小,而且都是黑白色构成,这些图片是采集的不同的人手写从0到9的数字。Keras将这个数据集和相关操作封装到了库中,下面我们将一步步了解MNIST的一些相关操作。
1.1下载MNIST数据
首先,导入相关模块和下载数据
import numpy as np
import pandas as pd
from keras.utils import np_utils #导入keras.utils,在后面可以将label变迁转换为One-Hot Encoding(一位有效编码)
from keras.datasets import mnist #Keras已集成MNIST模块,可直接导入
np.random.seed(10) #设置seed可以产生随机数
运行结果如下
因为Tensorflow是Keras的后端引擎,即以Tensorflow作为底层,所以可以看到Keras自动以Tensorflow作为Backend。
接着下载数据
(X_train_image,y_train_label),(X_test_image,y_test_label)=mnist.load_data()
第一次执行load_data()这个方法,程序会自动帮用户下载MNIST文件,可能下载需要花点时间,第二次以后再调用这个方法就可以直接调用本地文件了。
以下为各变量说明
变量名 | 说明 |
---|---|
X_train_image | 训练样本图像 |
y_train_label | 训练样本标签(即正确答案) |
X_test_image | 测试样本图像 |
y_test_label | 测试样本答案 |
1.2查看下载的数据
print('X_train_image.shape:',X_train_image.shape)
print('y_train_label.shape:',y_train_label.shape)