前馈神经网络:机器怎么认出你写的数字

在黑板上写一个 0 到 9 的数字。它被缩成 28×28 = 784 个像素送进网络, 经过 32 个隐藏神经元,最后输出 10 个数字各自的概率。下面每一小块就是一个隐藏神经元学出来的「笔画模板」: 红色是它希望有墨的地方,蓝色是它希望空白的地方。越亮的块,此刻越兴奋。

① 在黑板上写一个数字(写大一点)
测试集示例:
② 网络实际看到的 28×28 像素
③ 隐藏层:32 个神经元(点一块看它的详情;红框是这次判断里出力最多的 3 个)

④ 输出层:每个数字的概率

神经元详情

点左边隐藏层里的任意一块。
参数量25,450 个
测试集准确率(1 万张没见过的图)—
同一批图整体右移后—
训练时做过的平移增强随机 ±2 像素

这个网络是用公开的 MNIST 手写数字数据集训练的,只见过美国人写的阿拉伯数字,所以有些写法它会认错。

模型由本页配套的 train.py 从 MNIST 数据集训练得到(LeCun、Cortes、Burges,CC BY-SA 3.0),模型权重与测试集示例图按 CC BY-SA 3.0 提供。 你写的数字只在本机浏览器里计算,不会上传。
本页由 AI 教学改革实践研究计划独立编写(算法为公开知识),页面代码可自由嵌入、修改与再分发(CC BY-NC 4.0)。 AI 课程公益资源