【问题标题】:Neural Network Character Recognition神经网络字符识别
【发布时间】:2017-01-30 01:19:54
【问题描述】:

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

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

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

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

在输入时,0.1 表示像素完全不着色,0.9 表示完全着色。

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

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

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

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

也许我将字符映射到数字的一般概念导致了问题。

非常感谢任何帮助以使网络更加准确。

【问题讨论】:

  • 对这个任务使用卷积神经网络,而不是 MLP。获取更多数据也是提高性能的好方法。

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


【解决方案1】:

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

例如,

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

【讨论】:

    猜你喜欢
    • 2011-12-12
    • 2012-03-31
    • 1970-01-01
    • 2011-09-18
    • 2014-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    相关资源
    最近更新 更多