神经网络字符识别

Neural Network Character Recognition

假设我正在尝试创建一个神经网络来识别简单的 5x5 像素网格上的字符。我只有 6 个可能的字符(符号)- X,+,/,\,|

目前我有一个前馈神经网络 - 具有 25 个输入节点、6 个隐藏节点和一个输出节点(在 0 和 1 之间 - sigmoid)。

输出对应一个符号。如'X' = 0.125'+' = 0.275'/' = 0.425

无论网络(测试时)的输出是什么,都对应于数字上最接近的任何字符。即 - 0.13 = 'X'

在输入上,0.1 表示像素根本没有着色,0.9 表示完全着色。

在 6 个符号上训练网络后,我通过添加一些噪声对其进行测试。

不幸的是,如果我向“/”添加一点噪音,网络就会认为它是“\”。

我认为 6 个符号的顺序(即,e - 它们对应的数字表示形式)可能会有所不同。

可能是隐藏节点的数量导致了这个问题。

可能是我将字符映射到数字的一般概念导致了问题。

如果您能帮助我们提高网络的准确性,我们将不胜感激。

输出编码是最大的问题。您最好对输出使用单热编码,这样您就有六个输出节点。

例如,

-   1 0 0 0 0 0
X   0 1 0 0 0 0
+   0 0 1 0 0 0
/   0 0 0 1 0 0
\   0 0 0 0 1 0
|   0 0 0 0 0 1

这对于神经网络来说更容易学习。在预测时,选择具有最高值的节点作为您的预测。例如,如果每个输出节点的输出值如下:

-   0.01
X   0.5
+   0.2
/   0.1
\   0.2
|   0.1

将字符预测为"X"。