径向基网络字符识别

时间:2014-02-08 15:50:06

标签: arrays algorithm machine-learning neural-network prediction

我想通过实现给定的神经网络类来开发一个简单的字符识别程序;一个简单的命令行类型就足够了。

径向基函数神经网络被分配给我,我已经研究了重量训练,输入到隐藏到输出的程序,但我仍然怀疑实现它。我的推荐是(1)(2)

10×10二进制对象(表示字符)的简单一维数组是输入。例如,

下面的数组
input = array( 
    0,0,0,1,1,1,1,0,0,0,
    0,0,1,0,0,0,0,1,0,0,
    0,1,0,0,0,0,0,0,1,0,
    1,0,0,0,0,0,0,0,0,1,
    1,1,1,1,1,1,1,1,1,1,
    1,0,0,0,0,0,0,0,0,1,
    1,0,0,0,0,0,0,0,0,1,
    1,0,0,0,0,0,0,0,0,1,
    1,0,0,0,0,0,0,0,0,1,
    1,0,0,0,0,0,0,0,0,1 )

是字符“A”的表示形式:

0   0   0   1   1   1   1   0   0   0
0   0   1   0   0   0   0   1   0   0
0   1   0   0   0   0   0   0   1   0
1   0   0   0   0   0   0   0   0   1
1   1   1   1   1   1   1   1   1   1
1   0   0   0   0   0   0   0   0   1
1   0   0   0   0   0   0   0   0   1
1   0   0   0   0   0   0   0   0   1
1   0   0   0   0   0   0   0   0   1
1   0   0   0   0   0   0   0   0   1

我计划取输入的总重量,并将其与训练集进行比较,如同保存的字母表中其他字符的一维数组,最接近的是预测。

问题是如果以CLRS方式或类似方式呈现而不是数学公式,我倾向于更好地理解算法。我发现很难理解这两篇论文中的解释(在Google搜索中我发现这些论文最容易阅读)。

有人能指出一个RBNFF的友好算法,它接收一个数组并产生一个权重输出吗?如果没有,那么以Layman的方式解释这一点的论文将不胜感激。

1 个答案:

答案 0 :(得分:1)

培训

对于我能找到的东西,没有“一种正确的方法”来训练他们。

我能找到的最简单的训练是两种算法的组合

  1. (聚类)获取网络的左侧部分(输入权重和RBF)并进行无监督聚类。您可以尝试硬/软和集群/ RBF的数量。 每个聚类都是单个RBF的表示,其权重与其连接。 如何从拥有集群获取rbf和rbf权重取决于您正在使用的集群。 (如果不清楚,我可以扩展这个)

  2. (神经网络)通过使用聚类的输出作为普通单层神经网络的输入,从最后一步求解原始RBFNN的左侧部分。

  3. 可能更容易找到容易解释的这些更原始的算法

    修改

    发现了一些“伪”代码,其解释可能更好地解释了它(用C#编写)

    http://msdn.microsoft.com/en-us/magazine/dn532201.aspx

    (据说)工作python代码

    https://github.com/andrewdyates/Radial-Basis-Function-Neural-Network