我是ANN的非常(非常)初学者,阅读this tutorial。作者在下面的OCR示例中解释了ANN。
有二进制图像,其中8x8网格具有相同的单元格(单元格总是具有相同的大小)。每个数字都是使用网格的一些单元格形成的。每张图片都有一个数字0-9
。
此外,假设所有训练过的数字也具有相等的8x8网格(例如训练数字的矢量4
=识别数字4
的矢量)。
所以他说我们需要64个输入(每个网格单元一个输入)。此外,我们需要10个输出节点(因为我们有10个数字)。假设有一层隐藏节点。但我无法理解这一切是如何产生效果的。
有谁能说我们需要多少隐藏节点以及这些隐藏节点必须做什么?
P.S。我们不需要在这里做所有帮助OCR处理 - 预处理,分段,演示。我们已经有长度为64的特征向量。
答案 0 :(得分: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像素图像的空间。来自" 64像素的图像看起来像3"单层神经网络(又称感知器)只能计算线性决策边界。更深入的神经网络使其更灵活地模拟更复杂的决策边界。
为了更好的直觉,尝试使用Tensorflow web demo。您可以改变参数并查看添加更多层的方式如何增加表达能力,以及添加更多神经元如何改变准确性。