我已经浏览了所有代码,如果确实是问题所在,那么我不确定它是如何躲避我的。发布时间太长了,所以我会告诉你我的问题,我在修复什么,如果你有任何想法我还能搜索什么,我会非常感激!
好的,首先按照 haykin 的指示,将权重初始化为均值为零,方差等于该神经元输入数量的 1/平方根。
我已经给它一个简单的正弦波来学习。隐藏层中的权重似乎收敛,为该层中的每个神经元提供相同的输出......这使得输出神经元给出几乎固定的输出。
那么,可能是什么原因呢?首先,我检查了网络学习率是否导致它陷入局部最小值并增加了它,并尝试了有无动量。我发现它在一定程度上解决了这个问题,因为网络确实会产生正弦波。然而,不妥!:(
网络输出的幅度大约是从中心轴向上的高度的三分之一,并且不会低于。它看起来有点像你已经拾起正弦波,将其压扁三分之一,然后将其抬高以使其最低峰位于轴上。此外,顶峰都是平坦的......
从那以后我尝试改变网络拓扑结构,如果我添加另一个隐藏神经元(总共 3 个),它突然只会给出一个固定的输出。