我正在尝试编写一个简单的神经网络,可以为y = x函数提供权重。这是我的代码: http://codepad.org/rPdZ7fOz
正如您所看到的,错误级别从未真正下降过多。我尝试改变动力和学习率但是没有多大帮助。我输入,隐藏和输出的数量是否正确我想做什么?如果不是,它应该是什么?如果是这样,还有什么可能是错的?
答案 0 :(得分:2)
据我所知,您正在尝试训练网络以提供输出值1,2,3,4
。然而,在输出处使用sigmoid(math.tanh(..)
),其值始终在-1和1之间。
因此,神经网络的输出始终介于-1和1之间,因此在尝试将输出值拟合到该范围之外时,总会出现较大的错误。
(我刚刚检查过,当你将输入和输出值缩放0.1时,似乎有一个很好的训练进度,我最终得到了:
error 0.00025
)
如果要进行分类,您正在使用的神经网络非常有用(例如,如果NN输出为< 0,则将数据点分配给A类;如果> 0,则将数据点分配给B )。看起来你想要做的是 regression (适合实值函数)。
您可以删除输出节点上的sigmoid,但是您必须稍微修改您的反向传播过程才能将其考虑在内。