神经网络,python
我正在尝试写一个简单的神经网络,目的是让它能够找到一些权重,以便拟合比如y=x这个函数。以下是我的代码: http://codepad.org/rPdZ7fOz
从结果来看,错误的水平一直没有明显下降。我尝试过调整动量和学习率,但效果不大。请问我输入层、隐藏层和输出层的数量设置得对吗?如果不对,应该怎么设置?如果设置是对的,那还有什么可能出错的地方呢?
1 个回答
2
你想训练这个网络,让它输出的值是 1,2,3,4
,对吧?但是在输出层你用了一个 sigmoid 函数(math.tanh(..)
),它的值总是在 -1 和 1 之间。
所以,你的神经网络输出的值总是在 -1 到 1 之间,这样当你想要输出范围外的值时,就会产生很大的误差。
(我刚刚检查了一下,如果把你的输入和输出值都乘以 0.1,训练效果似乎不错,最后我得到了:
error 0.00025
)
你现在用的神经网络适合做 分类(比如说,如果神经网络的输出小于 0,就把数据点归为 A 类;如果大于 0,就归为 B 类)。但看起来你想做的是 回归(也就是拟合一个真实值的函数)。
你可以去掉输出节点的 sigmoid 函数,但你需要稍微调整一下反向传播的过程,以适应这个改变。