我目前遇到一个问题,我在Java中使用自我实现的神经网络几天都无法弄清楚。我的网络有两个输入神经元,对应于给定灰度图像中像素的x和y坐标,一个输出表示像素的色调。我正在使用的学习算法是RPROP。我遇到的问题是,在为整个训练数据集提供网络的多次迭代之后,它会收敛到远离预期的点,并且在分析了融合网络的权重结构后,我可以看到所有神经元在隐藏层中具有完全相同的输入权重集。这与隐藏层中的神经元数量无关。是因为我正在使用相同的值初始化网络中的所有权重吗?我尝试随机化重量,但它没有让事情变得更好。我在除输出层之外的所有层中使用sigmoidal(tanh)激活函数。我不知道我是否在实施中犯了一个错误,或者我是否误解了神经网络学习过程的某些数学描述。有谁知道什么可能导致这种奇怪的行为?
答案 0 :(得分:0)
您使用偏置单位吗?我会在神经网络中查找偏置单元的使用。此外,如果您正在进行简单的开箱即用实现,您可能希望针对已知的NN库测试您的工作的迭代结果。
答案 1 :(得分:0)
尝试使用打印输出调试网络正在进行的操作。如果您拥有少量单位,则可以打印激活,增量,权重和权重更改。如果你有很多 - 你可以尝试打印出它们绝对值的平均值。
这可能会引发您的问题。
另外 - 你尝试过学习率/动力吗?