我正在研究多层感知器并为2D空间中的分类点编写简单的网络。具有动量的反向传播算法的网络列车。 不幸的是,即使局部误差为零,全局误差仍然很高,我无法理解为什么。控制台中的全局错误输出范围为[100,150]。所以,我的主要问题是:如何减少这个错误呢? 显然,我提供了与我的项目存档的链接。关于这一点的几句话:网络的几乎所有参数都在文件libraries.h中(输入,隐藏和输出层维度,学习率,动量率,sigma和sigma派生定义)所以如果你想玩那个 - 在这里你去。 net的结构在文件perceptron.cpp中,图形库在plot.cpp中。要测试项目,您应该运行它,在出现的窗口上的点上单击鼠标左键,您想要成为类的中心。右键单击窗口将在这些中心周围的半径5的圆圈中生成随机点,并将使用此点训练网络 如果有人可以提供一些理论解决方案,或者甚至重新审视我的代码,我将非常感激。
答案 0 :(得分:0)
我成功地解决了这个问题 首先,我有不正确的点群中心,因此这些点在2D空间中变得完全不可分割 中学,我不得不重写训练过程,从集合中挑选随机点 第三个,我发现将double转换为int并不是最好的想法(非常高的数据丢失) 链接到最终版本的代码:CLICK