【发布时间】:2011-04-08 08:54:22
【问题描述】:
我正在尝试编写一个简单的神经网络,它可以为 y=x 函数提供权重。这是我的代码: http://codepad.org/rPdZ7fOz
如您所见,错误级别从未真正下降太多。我尝试改变动量和学习率,但没有太大帮助。我的输入、隐藏和输出数量是否适合我想要做的事情?如果不是,应该是什么?如果是这样,还有什么可能是错的?
【问题讨论】:
标签: python neural-network backpropagation
我正在尝试编写一个简单的神经网络,它可以为 y=x 函数提供权重。这是我的代码: http://codepad.org/rPdZ7fOz
如您所见,错误级别从未真正下降太多。我尝试改变动量和学习率,但没有太大帮助。我的输入、隐藏和输出数量是否适合我想要做的事情?如果不是,应该是什么?如果是这样,还有什么可能是错的?
【问题讨论】:
标签: python neural-network backpropagation
据我所知,您正在尝试训练网络以提供输出值1,2,3,4。然而,在输出中,您使用了一个 sigmoid (math.tanh(..)),其值始终介于 -1 和 1 之间。
因此,您的神经网络的输出始终介于 -1 和 1 之间,因此在尝试拟合超出该范围的输出值时,您总是会遇到很大的错误。
(我刚刚检查了将输入和输出值缩放 0.1 时,似乎有一个很好的训练进度,我在最后得到了:
error 0.00025
)
如果您想进行分类,您使用的神经网络非常有用(例如,如果 NN 输出 0,则将数据点分配给 B)。看起来你想做的是回归(拟合一个实值函数)。
您可以在输出节点移除 sigmoid,但您必须稍微修改反向传播过程以考虑到这一点。
【讨论】: