神经网络,python

2 投票
1 回答
1092 浏览
提问于 2025-04-16 03:43

我正在尝试写一个简单的神经网络,目的是让它能够找到一些权重,以便拟合比如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 函数,但你需要稍微调整一下反向传播的过程,以适应这个改变。

撰写回答