零基础python实现手写数字识别(附完整代码)
手写数字识别是计算机视觉的经典入门案例,我们将使用Python的Keras库(基于TensorFlow)和MNIST数据集,用不到50行代码实现一个准确率超过98%的识别模型。
·
以下是一篇适合零基础的Python实现手写数字识别的博客内容框架,包含完整代码和通俗解释:
零基础Python实现手写数字识别(附完整代码)
一、项目简介
手写数字识别是计算机视觉的经典入门案例,我们将使用Python的Keras库(基于TensorFlow)和MNIST数据集,用不到50行代码实现一个准确率超过98%的识别模型。
二、环境准备
pip install tensorflow numpy matplotlib
三、完整代码实现
# 导入所需库
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
# 1. 加载数据集
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# 2. 数据预处理
# 归一化处理(将0-255的像素值压缩到0-1之间)
x_train = x_train / 255.0
x_test = x_test / 255.0
# 3. 构建神经网络
model = tf.keras.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)), # 将28x28图像展平为784像素
tf.keras.layers.Dense(128, activation='relu'), # 全连接层(128个神经元)
tf.keras.layers.Dropout(0.2), # 防止过拟合
tf.keras.layers.Dense(10, activation='softmax') # 输出层(10个数字类别)
])
# 4. 编译模型
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# 5. 训练模型
history = model.fit(x_train, y_train,
validation_split=0.2, # 使用20%数据作为验证集
epochs=10)
# 6. 评估模型
test_loss, test_acc = model.evaluate(x_test, y_test)
print(f"\n测试集准确率:{test_acc:.4f}")
# 7. 预测演示(使用测试集第一张图片)
predictions = model.predict(x_test)
plt.imshow(x_test[0], cmap=plt.cm.binary)
plt.show()
print("预测结果:", np.argmax(predictions[0]))
四、代码解析
1. MNIST数据集
- 包含6万张训练图片和1万张测试图片
- 每张图片是28x28像素的手写数字(0-9)
2. 神经网络结构
- 输入层:784个神经元(对应28x28像素)
- 隐藏层:128个神经元(使用ReLU激活函数)
- 输出层:10个神经元(对应0-9数字,使用Softmax激活)
3. 关键参数
epochs=10
:整个数据集训练10遍adam
优化器:自动调节学习率的智能优化算法Dropout
:随机屏蔽20%神经元,防止模型过拟合
五、运行结果示例
Epoch 1/10
1500/1500 [=====] - 3s 2ms/step - loss: 0.3333 - accuracy: 0.9028
...
测试集准确率:0.9763
六、扩展应用
尝试用自己手写的数字测试:
- 用画图工具创建28x28像素的黑色背景数字图片
- 使用以下代码加载预测:
from PIL import Image
# 加载自定义图片
img = Image.open("my_number.png").convert('L') # 转为灰度图
img = np.array(img) / 255.0 # 归一化
prediction = model.predict(img.reshape(1,28,28))
print("预测数字:", np.argmax(prediction))
七、改进方向
- 使用卷积神经网络(CNN)提升准确率
- 增加数据增强(旋转/平移图片)
- 调整网络层数和神经元数量
小贴士:完整代码在Colab可直接运行,新手建议从调整epochs
参数观察准确率变化开始体验!
通过这个项目,你可以掌握:
✅ 神经网络基本流程
✅ 数据预处理方法
✅ 模型训练与评估
✅ 简单的图像识别原理
建议收藏代码后边实践边学习相关理论,效果更佳哦!

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)