本文将介绍如何使用卷积神经网络(CNN)来解决手写数字识别问题(MNIST)。我们将使用Python和TensorFlow来实现这一过程。
1. 简介
MNIST是一个包含60,000个训练样本和10,000个测试样本的手写数字数据集。每个样本都是一个28x28像素的灰度图像,代表一个手写数字。
2. 环境准备
在开始之前,请确保你已经安装了以下软件:
- Python 3.x
- TensorFlow
- Jupyter Notebook 或任何其他Python编辑器
3. 构建CNN模型
以下是一个简单的CNN模型,用于MNIST数据集:
import tensorflow as tf
model = tf.keras.models.Sequential([
tf.keras.layers.Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1)),
tf.keras.layers.MaxPooling2D(pool_size=(2, 2)),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(10, activation='softmax')
])
4. 训练模型
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
5. 测试模型
test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2)
print('\nTest accuracy:', test_acc)
6. 预测新数据
predictions = model.predict(x_new)
7. 扩展阅读
想要了解更多关于CNN的信息,可以阅读TensorFlow官方文档。