我正在尝试用python中的反向传播编程神经网络。
有时它朝着点的方向上升然后再次下降
这是完整的代码: http://pastebin.com/9BiwhWrD反向传播代码从第146行开始 (第165行的根本没有做任何事情。只是尝试了一些想法)
任何可能出错的想法?你见过这样的行为吗?
非常感谢你。
答案 0 :(得分:0)
之所以发生这种情况,是因为输入数据太大了。对于x - >,激活sigmoid函数收敛到f(x)= 1。 INF。我必须规范化数据
e.g:
a = np.array([1,2,3,4,5])
a /= a.max()
或防止生成非标准化数据。
此外,在应用sigmoid之前更新了临时值。但是sigmoid的推导看起来像这样:y'(x)= y(x) - (1-y(x))。就我而言,它只是:y'(x)= x-(1-x)
在计算增量后我如何更新权重也有错误。我用python的神经网络教程重写了整个循环,然后就可以了。
它仍然不支持偏见但它可以进行分类。对于回归来说,它不够精确,但我想这与缺失的偏见有关。
这是代码: http://pastebin.com/hRCKe1dK
有人建议我应该将我的训练数据放入神经网络框架中,看看它是否有效。它没有。因此很明显它必须与它一起使用,所以我不得不认为它应该在-1和1之间。