我一直在关注Dave Miller的ANN C ++教程,我一直遇到一些问题让它按预期运行。
您可以查看我正在使用的代码here。它是一个XCode项目,但包含main.cpp和数据集文件。
以前,这个程序只会给出-1到1之间的输出,我假设由于使用了tanh函数。我操纵了数据输入,因此我可以输入更大且有效输出的数据。我只是通过将输入值乘以0.0001并将输出值乘以10000来完成此操作。
我正在使用的训练数据是包含的CSV文件。最后一列是预期输出,其余是输入。我对这些数据使用了错误的数学函数吗?
你会说这实际上是在学习吗?这一切都让我非常强调,我理解ANN的理论,但我不能从头开始实施。
最近的净平均误差肯定会变得越来越小,我觉得它正在学习。
如果我没有很好地解释自己,我很抱歉,我对ANN很新,这一切对我来说都很混乱。我的大学讲师在实践方面毫无用处,他们只教我们理论。
我一直在玩eta和alpha值,以及隐藏层的数量。
答案 0 :(得分:3)
你自己解释得很清楚,如果净近期平均值越来越低,这可能意味着网络实际上正在学习,但这是我对如何完全确定的建议。
带上CSV文件并将其分成2个文件,一个应该是所有数据的10%,另一个应该是剩下的全部数据。 您从一个未经训练的网络开始,然后通过网络运行10%的文件,并为每一行保存实际输出和预期结果之间的差异。 然后,您只使用90%的CSV文件训练网络,最后再次通过NET运行第一个10%文件,并将第一次运行时的差异与最新的差异进行比较。 您应该发现新结果比第一次更接近预期值,这将是您的网络正在学习的最终证明。 这有意义吗 ?如果没有,请发送共享一些代码或发送给您正在运行的练习的链接,我将尝试在代码中解释它。