我正在尝试使用自己编写的神经网络来近似sine()函数。我已经在一个简单的OCR问题上测试了我的神经网络,它起作用了,但我在应用它来近似sine()时遇到了麻烦。我的问题是,在训练过程中,我的误差恰好收敛到50%,所以我猜这完全是随机的。
我使用一个输入神经元作为输入(0到PI),并使用一个输出神经元作为结果。我有一个单一的隐藏层,我可以在其中改变神经元的数量,但我目前正在尝试大约6-10个。
我有一种感觉,问题是因为我使用的是sigmoid传递函数(这是我的应用程序中的一个要求),它的输出仅在0和1之间,而sine()的输出在-1和1之间。为了纠正这个问题,我尝试将输出乘以2,然后减去1,但这并没有解决问题。我在想,我必须在某个地方做一些转换,才能让它工作。
有什么想法吗?
发布于 2009-10-21 17:30:47
你的网络没有理由不能工作,尽管6对于近似正弦波来说绝对是偏低的。我至少会尝试10次,甚至20次。
如果这不起作用,那么我认为你需要提供更多关于你的系统的细节。即学习算法(反向传播?)、学习率等。
发布于 2012-06-22 13:30:58
如果使用香草梯度下降,我会得到相同的行为。尝试使用不同的训练算法。
就Java applet而言,我确实注意到了一些有趣的事情:如果我使用“双极sigmoid”,并且我从一些非随机权重开始,它确实会收敛(比如之前使用二次函数训练的结果)。
https://stackoverflow.com/questions/1565115
复制相似问题