2017-06-29 37 views
2

我是一个非常非常(初学者)的人工神经网络,并阅读this tutorial。作者在下面的OCR示例中解释了ANN。使用神经网络进行数字识别的具体示例

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

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

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

所以他说,我们需要64个输入(对每个网格单元一个输入)。另外我们需要10个输出节点(因为我们有10个数字)。假设有一层隐藏节点。但我无法理解所有这些如何发挥作用。

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

P.S.我们不需要在这里完成所有帮助OCR处理 - 预处理,分割,演示。我们已经有向量的长度为64的特征。

回答

0

我们可以有任意数量的隐藏神经元。权重是乘以输入向量的矩阵,所以图层的输出可以是任意大小。在你的例子中,权重矩阵将具有以下大小。注意:我排除了非线性,例如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像素图像”等空间分开。单层神经网络(aka一个感知器)只能计算一个线性决策边界。更深层次的神经网络使得它可以更灵活地模拟更复杂的决策边界。

为了更好的直觉,尝试玩Tensorflow web demo。您可以改变这些参数并查看添加更多图层是如何增加更多表现力的,以及如何添加更多神经元来更改精度。