machine-learning - 神经网络字符识别

标签 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 个符号的顺序(即它们对应的数字表示)可能会有所不同。

也许隐藏节点的数量导致了这个问题。

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

任何有助于使网络更加准确的帮助将不胜感激。

最佳答案

输出编码是最大的问题。您最好对输出使用 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”。

关于machine-learning - 神经网络字符识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39622507/

相关文章:

python - 适合多类分类的深度学习结构

python - 通过某些点的值获取函数

python-3.x - 使用 Dask 进行并行学习

python - 为什么我的 LSTM 在 tensorflow 中学习得这么慢而且很糟糕?

java - dl4j 不包含文本和模型模块

python - opencv findContours 错过了一些区域。[没有得到所有正确的边界框]

machine-learning - 如何获得逻辑回归特征对于特定预测的相对重要性?

python - 使用 Xception CNN 训练自定义图像时出现奇怪的错误

image-processing - OpenCV:如何知道HaarTraining的进度状态

machine-learning - 训练算法以实现更好的图像识别