MNIST数据集是机器学习领域中用于测试图像处理系统的基准数据集,包含了从0到9的手写数字图像。它常被视为深度学习领域的“Hello World”程序。本文将带一步步了解如何使用Python和Keras库来处理MNIST数据集,并构建一个神经网络模型。
在开始编码之前,需要获取数据集。MNIST数据集可以通过多种方式获取,例如UCI、Kaggle等,但由于使用的是Python及其内置模块,可以直接从Keras库中导入MNIST数据集。
from keras.datasets import mnist
data = mnist.load_data()
以上代码从Keras的datasets模块导入了mnist函数,该函数包含了MNIST数据集。然后使用mnist.load_data()函数将数据集加载到变量data中。
接下来,将数据集分为训练集和测试集。为此,初始化四个变量X_train, y_train, X_test, y_test来存储训练和测试数据的依赖和独立值。
(X_train, y_train), (X_test, y_test) = data
打印每个图像的形状,发现它是28×28大小的,意味着图像有28像素×28像素。现在,需要将图像重塑,以便可以访问图像的每个像素。
X_train = X_train.reshape((X_train.shape[0], 28*28)).astype('float32')
X_test = X_test.reshape((X_test.shape[0], 28*28)).astype('float32')
为了进行机器学习,将每个像素的值从0到255转换为0到1的范围是很重要的。最简单的方法是将每个像素的值除以255。
X_train = X_train / 255
X_test = X_test / 255
为了构建模型,需要导入Keras库中的Sequential和Dense函数。
from keras.models import Sequential
from keras.layers import Dense
model = Sequential()
model.add(Dense(32, input_dim = 28 * 28, activation= 'relu'))
model.add(Dense(64, activation = 'relu'))
model.add(Dense(10, activation = 'softmax'))
model.fit(X_train, y_train, epochs=10, batch_size=100)