使用神经网络进行数字识别的具体示例

Posted

技术标签:

【中文标题】使用神经网络进行数字识别的具体示例【英文标题】:Concrete example of digits recognition using neural network 【发布时间】:2017-12-03 07:40:15 【问题描述】:

我是 ANN 的非常(非常)初学者,正在阅读 this tutorial。作者在以下 OCR 示例中解释了 ANN。

存在具有相同单元格的 8x8 网格的二进制图像(单元格始终具有相同的大小)。每个数字都是使用网格的一些单元格形成的。每张图片都有一个数字0-9

此外,假设所有训练的数字也具有相等的 8x8 网格(例如,训练数字的向量 4 = 识别数字的向量 4)。

例如这是数字4的图像:

所以他说我们需要 64 个输入(每个网格单元一个输入)。此外,我们需要 10 个输出节点(因为我们有 10 个数字)。假设有一层隐藏节点。但我不明白这一切是如何产生结果的。

谁能说出我们需要多少隐藏节点以及这些隐藏节点必须做什么?

附:我们不需要在这里做所有帮助 OCR 处理的工作——预处理、分割、呈现。我们已经有了长度为 64 的特征向量。

【问题讨论】:

【参考方案1】:

我们可以有任意数量的隐藏神经元。权重是与输入向量相乘的矩阵,因此层的输出可以是任意大小。在您的示例中,权重矩阵将具有以下大小。注意:我排除了非线性,例如sigmoid、tanh 或 relu,因为它们按元素操作并且不会改变形状。

output = output_weights * hidden_weights * input
10 x 1    10 x num_hid    num_hid x 64     64 x 1

隐藏神经元的实际作用要微妙得多。在此应用程序中,您试图找到一个决策边界,将“看起来像 4 的 64 像素图像”与“看起来像 3 的 64 像素图像”等空间分开。单层神经网络(又名感知器)只能计算线性决策边界。更深层次的神经网络为更复杂的决策边界建模提供了更大的灵活性。

为了获得更好的直觉,请尝试使用Tensorflow web demo。您可以改变参数并查看添加更多层如何增加表现力,以及添加更多神经元如何改变准确性。

【讨论】:

以上是关于使用神经网络进行数字识别的具体示例的主要内容,如果未能解决你的问题,请参考以下文章

基于深度卷积神经网络进行人脸识别的原理是啥?

新装的WIN7系统,网络连接显示的是未识别的网络,数据包发送有数字,接收是0,请问如何解决....

收藏 | 图像识别的可视化解释神经网络

用于图像识别的方向卷积网络

使用机器学习进行人脸识别的灰色还是 RGB?

图像识别是什么,卷积神经网络如何进行图像识别的?底层技术