news 2026/6/1 16:52:27

这个手写数字识别项目咱们直接从代码开撸!用Keras搭建个全连接神经网络,30行代码搞定核心功能,顺便聊聊代码里那些有意思的小细节

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
这个手写数字识别项目咱们直接从代码开撸!用Keras搭建个全连接神经网络,30行代码搞定核心功能,顺便聊聊代码里那些有意思的小细节

基于神经网络的数字识别完整代码+报告1

先整点硬菜——上核心代码:

from tensorflow import keras import matplotlib.pyplot as plt # 加载经典MNIST数据集 (train_images, train_labels), (test_images, test_labels) = keras.datasets.mnist.load_data() # 数据预处理(关键步骤!) train_images = train_images.reshape((60000, 28*28)).astype('float32') / 255 test_images = test_images.reshape((10000, 28*28)).astype('float32') / 255 # 构建神经网络(三层结构) model = keras.Sequential([ keras.layers.Dense(512, activation='relu', input_shape=(28*28,)), keras.layers.Dropout(0.2), keras.layers.Dense(10, activation='softmax') ]) # 配置训练参数 model.compile(optimizer='rmsprop', loss='sparse_categorical_crossentropy', metrics=['accuracy']) # 开始炼丹! history = model.fit(train_images, train_labels, epochs=10, batch_size=128, validation_split=0.2) # 测试集验证 test_loss, test_acc = model.evaluate(test_images, test_labels) print(f'\n测试准确率: {test_acc:.4f}')

数据预处理部分有个骚操作:astype('float32') / 255这行代码把像素值压缩到0-1之间。为什么要多此一举?其实这和神经网络的计算特性有关——归一化后的数据能让梯度下降更稳定,就像给汽车轮胎加了防滑链。

网络结构设计有个小彩蛋:第二层的Dropout层像随机给网络断电。这个正则化手段专门防止模型死记硬背,相当于考试时故意忘掉部分知识点,强迫神经网络真正理解数字特征。

训练过程中的batch_size=128值得说道说道。这个参数相当于把六万张图切成小块训练,既照顾内存限制又保证梯度更新频率。试着改成256会发现训练速度提升但准确率可能抖动,这就是典型的效率与效果的博弈。

来看段可视化代码,感受下神经网络的识别效果:

# 随机抽取测试样本展示 import random index = random.randint(0, 9999) plt.imshow(test_images[index].reshape(28, 28), cmap='gray') pred = model.predict(test_images[index][None,...]) print(f'预测结果: {pred.argmax()} 实际标签: {test_labels[index]}')

跑这段代码可能会看到有趣的现象:偶尔会识别错误的往往是那些人类都容易混淆的数字,比如7和9连笔写的时候。这说明神经网络的学习方式在某些方面确实接近人类视觉认知。

最后看下性能指标,测试集准确率大概能达到98%左右。这时候可以尝试在模型里加个卷积层,准确率还能再提升个0.5%。不过对于大多数实际应用场景,当前模型已经足够实用——毕竟银行ATM上的数字识别也没必要追求极致准确率。

整个项目跑下来不到5分钟(取决于电脑配置),但背后包含了数据预处理、网络架构设计、正则化策略、训练技巧等多个关键知识点。建议动手改改神经元数量、激活函数类型(试试把relu换成elu),观察模型表现的变化,绝对比单纯看理论来得带劲!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/30 17:16:42

Kotaemon框架的错误处理机制与调试技巧

Kotaemon框架的错误处理机制与调试技巧 在构建智能对话系统时,开发者常常面临一个尴尬的局面:模型在测试环境中表现优异,一旦上线却频繁出错——检索不到结果、工具调用失败、生成内容偏离预期……这些问题不仅影响用户体验,更让排…

作者头像 李华
网站建设 2026/5/30 3:29:52

Kotaemon林业资源查询AI助手上线

Kotaemon林业资源查询AI助手上线 在林业管理部门的日常工作中,一个基层工作人员可能需要反复查阅十几份PDF文件、登录多个系统才能回答“某林区近五年天然林面积变化趋势”这样的问题。信息分散、专业门槛高、流程繁琐——这些痛点长期制约着林业公共服务的效率与质…

作者头像 李华
网站建设 2026/6/1 13:35:35

vue+springboot电子商务商品销售平台的设计与实现_i6h9j4ec_论文

目录 已开发项目效果实现截图开发技术介绍系统开发工具: 核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式…

作者头像 李华
网站建设 2026/5/29 1:34:23

Python大数据技术的基于机器学习的智能学习辅导系统开发_068uvf15_论文

文章目录系统截图项目简介大数据系统开发流程主要运用技术介绍爬虫核心代码展示结论源码文档获取定制开发/同行可拿货,招校园代理 :文章底部获取博主联系方式!系统截图 Python_68uvf15_ 论文大数据技术的基于机器学习的智能学习辅导系统开发 项目简…

作者头像 李华
网站建设 2026/6/1 12:48:46

EmotiVoice开源TTS引擎在有声内容创作中的应用

EmotiVoice开源TTS引擎在有声内容创作中的应用 在有声书、游戏配音和虚拟偶像日益普及的今天,听众不再满足于“能说话”的AI语音——他们想要的是会呼吸、带情绪、有性格的声音。然而,传统文本转语音(TTS)系统常常陷入“机械腔”困…

作者头像 李华