news 2026/9/4 16:22:05

这个手写数字识别项目咱们直接从代码开撸!用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/9/4 3:09:12

Kotaemon支持的多种部署模式详解(本地/云/混合)

Kotaemon支持的多种部署模式详解(本地/云/混合) 在企业智能化转型加速的今天,构建一个既能保障数据安全、又能灵活扩展的智能对话系统,已成为许多组织的核心诉求。尤其是在金融、医疗和政务领域,如何在不牺牲隐私的前提…

作者头像 李华
网站建设 2026/9/4 1:43:48

Kotaemon矿业安全规程问答机器人部署

Kotaemon矿业安全规程问答机器人部署 在地下数百米的矿井中,一次误操作可能引发连锁反应;一条未及时传达的安全规程,或许就是事故的导火索。传统的安全管理依赖纸质手册、定期培训和人工巡查,但在真实作业场景中,工人很…

作者头像 李华
网站建设 2026/9/4 7:46:16

Python大数据技术的基于Hadoop的健康饮食推荐系统的设计与实现_5578bn9k_yh025

文章目录系统截图项目简介大数据系统开发流程主要运用技术介绍爬虫核心代码展示结论源码文档获取定制开发/同行可拿货,招校园代理 :文章底部获取博主联系方式!系统截图 Pyt宏_Python大数据技术的基于Hadoop的健康饮食推荐系统的设计与实现_5578bn9k_yh0…

作者头像 李华
网站建设 2026/9/4 6:05:13

从文本到情感语音:EmotiVoice的技术实现路径

从文本到情感语音:EmotiVoice的技术实现路径 在虚拟助手开始学会“安慰人”,游戏角色能因剧情悲喜而语调起伏的今天,我们正见证语音合成技术从“发声”向“动情”的深刻转变。过去那种机械朗读式的TTS系统,已经无法满足用户对自然…

作者头像 李华
网站建设 2026/9/5 5:15:44

Kotaemon多租户支持能力曝光,适用于SaaS场景

Kotaemon多租户支持能力曝光,适用于SaaS场景 在当今企业竞相构建智能客服、知识助手和自动化服务的浪潮中,一个核心挑战浮出水面:如何以低成本、高安全的方式为成百上千个客户同时提供个性化的AI问答能力?传统的“一客一部署”模式…

作者头像 李华
网站建设 2026/9/4 5:45:55

EmotiVoice语音合成引擎的架构设计与原理剖析

EmotiVoice语音合成引擎的架构设计与原理剖析 在虚拟主播直播中情绪起伏、游戏角色因剧情转折而语气骤变的时代,人们对“机械朗读”早已失去耐心。真正打动用户的,是那些能传递喜怒哀乐、带有个性色彩的声音——这正是现代文本转语音(TTS&am…

作者头像 李华