神经网络字符识别

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

目前我有一个前馈神经网络 – 拥有25个输入节点,6个隐藏节点和一个输出节点(在0到1之间 – 使用sigmoid函数)。

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

无论网络在测试时的输出是什么,都对应数值上最接近的字符。即 – 0.13 = 'X'

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

在用6个符号训练网络后,我通过添加一些噪声来测试它。

不幸的是,如果我给’/’添加一点噪声,网络认为它是’\’。

我认为可能6个符号的排序(即它们对应的数值表示)可能会产生影响。

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

可能我将字符映射到数字的总体概念导致了这个问题。

任何帮助都将非常受欢迎,以提高网络的准确性。


回答:

输出编码是最大的问题。你最好使用一热编码作为输出,这样你将有六个输出节点。

例如,

-   1 0 0 0 0 0X   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.01X   0.5+   0.2/   0.1\   0.2|   0.1

预测字符为”X”。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注