使用神经网络进行数字识别的具体示例
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。您可以改变参数并查看添加更多层如何增加表现力,以及添加更多神经元如何改变准确性。
【讨论】:
以上是关于使用神经网络进行数字识别的具体示例的主要内容,如果未能解决你的问题,请参考以下文章