Pau*_*nta 6 unit-testing backpropagation neural-network
我正在从头开始编写一个backprop神经网络迷你库,我需要一些帮助来编写有意义的自动化测试.到目前为止,我已经进行了自动化测试,验证了backprop算法是否正确计算了重量和偏差梯度,但没有测试培训本身是否真正有效.
我到目前为止的代码让我做以下事情:
鉴于所有这些,我可以编写什么样的自动化测试来确保正确实施训练算法.我应该尝试近似什么函数(sin,cos,exp,quadratic等)?我应该在什么范围内以及如何密集地从该函数中采样数据?NN应该采用什么架构?
理想情况下,该函数应该相当简单易学,因此测试不会持续很长时间(1-3秒),但也足够复杂以提供一定程度的确定性,即算法是否正确实现.
我正在为我的学位做类似的事情.您正在寻找的是集成测试,而不是单元测试.
单元测试仅告诉您代码是否按照您希望的方式工作.要检查算法是否实际正常工作,您应该编写集成测试,在其中创建具有所有必需依赖项的网络(真实的,而不是模拟).
创建网络后,您可以简单地尝试进行学习.简单数学函数的测试有利于开始.对于更多维度函数,您可以尝试eq Rosenbrock函数.它非常好,因为你可以用一个参数来改变它的维度.我用它仅用于GA基准测试.
您还可以在实际数据集上进行测试.我推荐Iris Dataset.它非常小,易于学习.如果测试通过,您可以看到您的网络确实有效,而不仅仅是解决了数学函数.我个人觉得很安慰.:)
为确保测试不会运行太长,请设置合理的最大纪元数.另请注意,您希望您的测试每次都要通过,直到您搞砸了,所以不要让它们太难以通过.
据我记得,我使用10个隐藏神经元作为虹膜数据集.在大约5次迭代中,您应该能够轻松获得至少95%的正确答案.
这样的测试可能需要几秒钟,但有一些是好的.您不必每次都运行它们.但是,如果你进行大规模的重构,他们仍然通过你,你不必担心.相信我 - 我去过那儿.