1

我正在尝试学习并适应 Java 中的 ImageNeuralNetwork 示例。到目前为止,我的问题是,当我给 NN 提供大量 32X32 的图像并让它训练时,误差永远不会低于 14%,并且一开始它会到处乱跳。

我的图像是 BW,它们分为 27 个类别。所以我知道有 27 个输出神经元。

我的问题是为什么 NN 不学习,我尝试使用不同的神经元数量设置不同的隐藏层(1 层或 2 层),但没有任何帮助。

谁能告诉我我做错了什么?就像我说的,我刚开始使用 NN,我在这里有点迷路

编辑:似乎如果我给它更少的图像作为输入来学习错误会下降,但这并不能真正解决问题,如果我想对很多图像进行分类,我会遇到错误永远不会下降

4

1 回答 1

1

您只需要使用一个隐藏层。神经网络上的附加隐藏层确实不会给你太多,请参阅通用逼近定理。我会尝试从 (输入计数 + 输出计数) * 1.5 作为隐藏神经元的数量开始。

至于为什么人工神经网络不能覆盖更多的图像,那就更难了。很可能是因为额外的图像种类太多,以至于 ANN 无法对它们进行分类。一个简单的前馈人工神经网络对于基于网格的图像识别确实不是理想的。神经网络不知道哪些像素彼此相邻,它只是像素的直线向量。ANN 基本上是在学习每个字母必须存在哪些像素。如果您稍微移动其中一个字母,ANN 可能无法识别它,因为您现在几乎移动了它训练时使用的每个像素。

我真的对 OCR 做的不多。然而,这似乎确实是深度学习擅长的领域。卷积神经网络能够更好地处理彼此靠近和近似的像素。使用深度学习应用程序可能会获得更好的结果。更多信息在这里: http ://dpkingma.com/sgvb_mnist_demo/demo.html

于 2014-11-08T02:29:02.690 回答