我一直在关注Dave Miller的ANN C ++教程,但在使其按预期运行时遇到了一些问题。

您可以查看我正在使用的here代码。这是一个XCode项目,但包含main.cpp和数据集文件。

以前,由于使用tanh函数,此程序只能提供-1和1之间的输出。我已经操纵了数据输入,因此可以输入更大的数据并具有有效的输出。我只是通过将输入值乘以0.0001,然后将输出值乘以10000来完成此操作。

我正在使用的训练数据是包含的CSV文件。最后一栏是预期的输出,其余的是输入。我是否对这些数据使用了错误的数学函数?

您会说这实际上是在学习吗?整个事情让我感到非常压力,我了解ANN背后的理论,但自己无法从头开始实施。

净最近平均误差肯定会越来越小,在我看来这是正在学习。

很抱歉,如果我对自己的讲解不够好,我对ANN来说还很陌生,这整个事情对我来说非常令人困惑。在实践方面,我的大学讲师没有用,他们只教我们理论知识。

我一直在测试eta和alpha值以及隐藏层的数量。

最佳答案

您已经很好地解释了自己,如果最近的净平均水平越来越低,则可能意味着网络正在学习,但这是我关于如何完全确定的建议。

将您的CSV文件分成2个文件,一个应占所有数据的10%,另一个应占所有剩余数据。
您从未经训练的网络开始,然后通过网络运行10%的文件,并为每一行节省了实际输出与预期结果之间的差。
然后,您仅使用拥有的CSV文件的90%训练网络,最后再次通过NET重新运行前10%的文件,然后将第一次运行的差异与最新的进行比较。
您应该发现新结果比第一次更接近预期值,这将最终证明您的网络正在学习。
这有意义吗 ?如果不是,请发送共享一些代码或给我发送您正在运行的练习的链接,我将尝试用代码进行解释。

08-25 21:55