Encog ImageNeuralNetwork错误没有下降

时间:2014-11-07 23:37:51

标签: java neural-network encog

我正在尝试学习并使用Java中的ImageNeuralNetwork示例。到目前为止,我的问题是,当我给NN更大量的32X32图像并让它训练时,错误永远不会低于14%,并且在开始时它会跳到整个地方。

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

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

谁能让我知道我做错了什么?就像我说我刚开始使用NN而且我有点迷失在这里

编辑:看来如果我把它作为输入来减少学习错误就会减少,但是这并没有真正解决问题,如果我想对大量图像进行分类,我会陷入错误永远不会下降< / p>

1 个答案:

答案 0 :(得分:1)

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

至于为什么人工神经网络无法覆盖更多图像,这就更难了。最有可能的原因是,人工神经网络的附加图像太多了,无法将它们全部归类。简单的前馈ANN对于基于网格的图像识别来说并不理想。神经网络不知道哪些像素彼此相邻,它只是像素的直线性矢量。 ANN基本上学习每个字母必须存在哪些像素。如果您稍微移动其中一个字母,人工神经网络可能无法识别它,因为您现在已经移动了几乎所有训练过的像素。

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