[英]Self-implemented neural-network strange convergance
我目前遇到的问题是,用Java的自实现神经网络已经有几天没有解决了。 我的网络有两个输入神经元,分别对应给定灰度图像中像素的x和y坐标,一个输出代表像素的色调。 我正在使用的学习算法是RPROP。 我遇到的问题是,在将整个训练数据集馈入网络的无数次迭代之后,它收敛到了一个与预期值相差很远的点,并且在分析了聚合网络的权重结构之后,我可以看到所有神经元在隐藏层中,输入权重完全相同。 这与隐藏层中神经元的数量无关。 是因为我用相同的值初始化网络中的所有权重吗? 我尝试将权重随机化,但这并没有使事情变得更好。 我在输出层以外的所有层中都使用了S型(tanh)激活函数。 我不知道我是否在实现中犯了错误,或者是否误解了神经网络学习过程的数学描述的某些部分。 有谁知道可能导致这种奇怪行为的原因?
尝试使用网络正在执行的打印输出进行调试。 如果单位数量少,则可以打印出激活,增量,权重和权重的更改。 如果您有很多东西,可以尝试打印出其绝对值的平均值。
这可能会导致您遇到问题。
另外-您是否尝试过学习速度/动量?
您是否在使用偏差单位? 我会在神经网络中查找偏差单位的用法。 另外,如果您要进行简单的即用型实现,则可能要针对已知的NN库测试工作的迭代结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.