我的神经网络能够了解样本是OR还是XOR表。但是,如果我想要它学习和表,它拒绝。
NN配置:
1个输入层,带有2个输入神经元
1个隐藏层,有3个神经元
1个输出层,包含1个结果神经元。
总共9个权重,6个在输入和隐藏之间分配,3个在隐藏和输出之间分配。
使用sigmoid作为激活函数。
使用OR或XOR时,值倾向于接近正确的值,如下所示:
OR
0 0 - 0.0232535024 //〜0
0 1 - 0.9882075648 //〜1
1 0 - 0.9881840412 //〜1
1 1 - 0.9932447649 //〜1
XOR
0 0 - 0.0419020172 //〜0
0 1 - 0.9742653893 //〜1
1 0 - 0.9742622526 //〜1
1 1 - 0.0096044003 //〜0
但是当我尝试将它训练为AND时,对于前3行,它倾向于接近0但是最后一行(1,1)它倾向于接近.5并且不会超过它。
和
0 0 - 0.0007202012 //〜0
0 1 - 0.0151875796 //〜0
1 0 - 0.0128653577 //〜0
1 1 - 0.4987960208 //非事件关闭,倾向于接近.5,一半是
如果需要代码,请告诉我我会发布。我想知道我的方法是否正确。
我可以为所有情况应用相同的激活功能吗? 为什么接近1的一半.5? 从概念上来说,我的理解是否有任何不妥之处。
我跟着 https://stevenmiller888.github.io/mind-how-to-build-a-neural-network/ 很少有人了解NN以及如何实施。 使用Java
以下是我的课程:
//from .9 to .8
mind.hiddenOutputArray[2] = new double[]{.8f};
这是一个更新,如果我随机更改9个权重,它似乎工作正常
{{1}}