Neural network 神经网络输出分组0.5?

Neural network 神经网络输出分组0.5?,neural-network,Neural Network,我试图编写一个神经网络系统,但即使遇到简单的和/或/或非类型的问题,输出似乎都在0.5(偏差为-1)和0.7(偏差为1)左右。 它看起来并不完全“错”。。。AND模式中的1,1看起来确实高于其他模式,OR模式中的0,0看起来更低,但它们仍然是分组的,因此这是有争议的 我想知道a)我是否犯了一些明显的错误或b)是否有任何关于调试神经网络的建议。。。因为你不能一直追查答案的确切来源 谢谢 迈克没有更多的信息是不可能说出来的 对于b)我找到的最好方法是为我的网络架构的小测试版本预先计算一组向量和权重,

我试图编写一个神经网络系统,但即使遇到简单的和/或/或非类型的问题,输出似乎都在0.5(偏差为-1)和0.7(偏差为1)左右。 它看起来并不完全“错”。。。AND模式中的1,1看起来确实高于其他模式,OR模式中的0,0看起来更低,但它们仍然是分组的,因此这是有争议的

我想知道a)我是否犯了一些明显的错误或b)是否有任何关于调试神经网络的建议。。。因为你不能一直追查答案的确切来源

谢谢

迈克

没有更多的信息是不可能说出来的

对于b)我找到的最好方法是为我的网络架构的小测试版本预先计算一组向量和权重,并使用一些调试代码将网络状态转储到csv文件中,以便我可以在Excel中查看它

对于单个模式和已知的网络初始状态,网络的前向(和后向)传递应该完全可以手动计算,因此最好有一个候选模式,或者有一对候选模式(如果可以手动执行的话),为测试完全枚举。事实上并不像听起来那么糟糕

这样做还有一个额外的好处,那就是它加强了您对算法如何工作的理解,并将使您从不同的角度再次检查您的实现

祝你好运


顺便说一句,无耻的backprop插件博客条目…

我回答了一个类似的问题,并发布了一些您可以测试的值:


使用这些值来测试您的神经网络。您的输出应该与值非常匹配,即使您使用不同的语言。。。您应该能够在小数点后至少匹配6位数字,而不会出现任何问题。

请原谅我的无知,但我的权重值是否会因以下情况而有所不同。。。momentum(我使用的是0.1)和我使用sigmoid作为我的激活。在你的屏幕截图中,sigmoid被取消选择了吗?@Mike,实际上屏幕截图只是为了演示网络的节点架构。。。我在描述中指定了权重和值,当然我使用了sigmoid函数。如果您在节点中使用相同的权重和值,并且使用backprop,那么结果之间应该不会有差异。这可能有点晚了,但是,我应该在我的“输出”上看到更多的范围,对吗?它不应该像。。。四舍五入0.56到1和0.49到0?每次我检查单个公式时,它都会顺利通过,所以我认为这是实现而不是算法:)这更烦人:)您的sigmoid函数只负责规范化值,只有在值在您的精度阈值内时,您才应该舍入值。最初只是尝试产生一个非常小的均方根误差,当误差低于阈值时,只有到那时,你才能将实例标记为正确分类。我一直在玩它很多。。。我认为算法是正确的。DeltaWeightHiddenToOutput(getLearningRate()*dHiddenValues[j]*dErrorGradients[1][i])+(dWeightDelta[1][j][i]*getMomentum());ErrorGradientForOutput=内联双计算器RorGradient(双dExpected,双dOutput){return dOutput*(1-dOutput)*(dExpected-dOutput);}ErrorHiddenLayers for(unsigned int i=0;i