神经网络字符识别

时间:2016-09-21 17:03:34

标签: machine-learning neural-network image-recognition feed-forward

假设我尝试创建一个神经网络来识别简单的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 :(得分:3)

输出编码是最大的问题。您最好使用单热编码进行输出,以便有六个输出节点。

例如,

-   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"。