c#-多输出神经网络中的训练错误和验证错误
作者:互联网
我正在开发一个用于研究神经网络的程序,到目前为止,我了解了将数据集分为3组(训练,验证和测试)的区别(我想).我的网络可能只有一个输出或多个输出,具体取决于数据集和问题.学习算法是反向传播.
因此,问题基本上是让我对每个错误及其计算方法感到困惑.
哪个训练错误?如果我想使用MSE是(期望的输出)^ 2吗?但是,如果我的网络有2个或更多输出,训练错误将是所有输出的总和,那会发生什么?
然后,验证错误只是使用验证数据集来计算输出,并将获得的结果与所需结果进行比较,这会给我带来错误,它的计算方法与训练错误中的计算方法相同吗?并有多个输出?
最后,不清楚的是,验证何时开始运行?我在某处读到它可能每5个周期出现一次,但是对此有任何规定吗?
提前感谢时间!
解决方法:
对于多个输出神经元,要计算训练误差,请在每个时期/迭代中获取每个输出值,并获得与该神经元目标值的差.将其平方,对其他输出神经元执行相同的操作,然后获得均值.
例如,有两个输出神经元
MSE =(| op1-targ1 | ^ 2 | op2-targ2 | ^ 2)/ 2
训练,验证和测试错误的计算方法相同.区别在于它们何时运行以及如何使用.
通常在每个训练时期检查完整的验证集.也许为了加快计算速度,您可以每5个运行一次.
验证测试/检查的结果不用于更新权重,仅用于确定何时退出训练.它用于确定网络是否对数据进行了泛化,而不是过拟合.
检查此问题的第一个答案中的伪代码
whats is the difference between train, validation and test set, in neural networks?
标签:neural-network,backpropagation,mse,c 来源: https://codeday.me/bug/20191122/2056449.html