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

标签 algorithm neural-network artificial-intelligence ocr

我是 ANN 和阅读的非常(非常)初学者 this tutorial .作者在下面的 OCR 示例上解释了 ANN。

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

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

例如这是数字 4 的图像:
enter image description here

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

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

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

最佳答案

我们可以有任意数量的隐藏神经元。权重是与输入向量相乘的矩阵,因此层的输出可以是任意大小。在您的示例中,权重矩阵将具有以下大小。注意:我排除了非线性,例如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 .您可以改变参数并查看添加更多层如何增加更多表现力,以及添加更多神经元如何改变准确性。

关于algorithm - 使用神经网络进行数字识别的具体例子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44827923/

相关文章:

java - 为空格分隔的单词实现分类器算法的问题

iphone - 确定给定字符串中是否出现单字子串的最佳算法是什么

c++ - 将一个数字提高到一个巨大的指数

artificial-intelligence - 如何在 Jason (Agentspeak) 中模拟动态行为

javascript - 随机 2D 僵尸行走

algorithm - 解决这个网格搜索问题的更好方法?

machine-learning - 如何提高我的神经网络准确率(说话人识别 - MFCC)

machine-learning - CNN 中的反向传播(通过卷积层)和梯度

algorithm - 如何调整我的 Minimax 搜索树来处理没有基于术语的游戏?

python - 如何在 scikit-learn 管道中向 Keras 网络添加纪元