我已经创建了一个神经网络,性能很好。通过使用nprtool,我们可以使用输入数据和目标数据来测试网络。我的问题是,用提供的目标数据测试神经网络的目的是什么?难道测试不应该有目标数据,这样我们就可以知道训练好的神经网络在没有目标数据的情况下能做得多好?希望有人对此作出回应,谢谢=)
发布于 2012-09-28 00:18:25
我不熟悉nprtool,但我怀疑它会将输入数据提供给您的神经网络,然后将NN的输出数据与目标数据进行比较(并在此基础上计算某种成功率)。
因此您的NN永远不会看到目标数据,它只是用于测量性能。
这就像是学校练习本的“教师版”。学生(即神经网络)没有答案,但老师(即nprtool)会将她/他的答案与答案进行比较。(好的,老师可能/希望知道这门课,但你明白了。)
发布于 2012-09-28 01:38:00
“目标”数据t是作为示例用于训练网络的y=net(x)的所需y。nprtool所做的是将训练集分为三组:训练集、验证集和测试集。
第一个用于实际更新网络。
第二个用于确定网络的性能(注意:这个集合不会以任何方式更新网络):随着NN“学习”到验证集合上的误差(如t和net(x)之间的差异)减小。这种趋势最终会停止甚至逆转:这种现象被称为"overfitting",这意味着神经网络现在正在追逐训练集,以泛化能力为代价来“记忆”它(意思是:在看不见的数据中表现良好)。因此,此验证集的目的是在NN开始过拟合之前确定何时停止训练。这应该可以回答您的问题。
最后,第三组是用于外部测试的,给你留下了一组不受训练过程影响的数据。
发布于 2017-11-22 12:09:41
即使总的数据集训练、验证和测试是训练算法的输入,测试数据也不能用于设计(即,训练和验证)网络
总数=设计+测试
设计=培训+验证
训练数据用于估计权重和偏差
验证数据用于监控非训练数据的设计性能。无论训练数据的性能如何,如果验证性能连续下降6个(默认)时期,则终止训练(验证停止)。
这缓解了过度训练过度拟合网络的可怕现象,在过度拟合网络中,即使训练集性能正在提高,非训练数据的性能也会下降。
与训练方程相比,过拟合网络具有更多的未知权重和偏差,从而允许无限数量的解。一个简单的例子,用两个未知数但只有一个方程进行过拟合:
已知: a,b,c
查找:唯一的x1和x2
使用:a* x1 +b* x2 =c
希望这能有所帮助。
格雷格
https://stackoverflow.com/questions/12625665
复制相似问题