2012-01-16 54 views
0

我目前有,我一直无法弄清楚几天与Java中的自我实现的神经网络有问题。我的网络有两个输入神经元,分别对应给定灰度图像中一个像素的x和y坐标,以及一个表示像素色调的输出。我使用的学习算法是RPROP。我遇到的问题是,在用整个训练数据集喂养网络的许多次迭代之后,它收敛到离期望距离很远的点,并且在分析了融合网络的重量结构之后,我可以看到所有神经元在隐藏层中具有完全相同的输入权重集合。这与隐藏层中神经元的数量无关。是否由于我使用相同的值初始化网络中的所有权重?我尝试随机化权重,但它并没有让事情变得更好。我在除输出图层外的所有图层中使用S形(tanh)激活函数。我不知道我是否在实现中犯了一个错误,或者是否误解了神经网络学习过程的某些数学描述。有谁知道什么可能会导致这种奇怪的行为?自我实现的神经网络奇怪convergance

回答

0

是否使用偏置单位?我会查找神经网络中偏置单元的使用。另外,如果您正在做一个简单的开箱即用的实现,您可能需要根据已知的NN库来测试您的工作的迭代结果。

0

尝试打印出网络正在进行的调试。如果您的单位数量很少,则可以打印激活,增量,权重和对权重的更改。如果你有很多 - 你可以尝试打印出绝对值的平均值。

这可能会导致您遇到问题。

此外 - 你有没有尝试玩的学习率/势头?