我正在尝试使用我自己编写的神经网络来近似 sine() 函数。我已经在一个简单的 OCR 问题上测试了我的神经网络并且它有效,但我在将其应用于近似 sine() 时遇到了困难。我的问题是,在训练过程中,我的误差恰好收敛于 50%,所以我猜它是完全随机的。
我使用一个输入神经元作为输入(0 到 PI),使用一个输出神经元作为结果。我有一个隐藏层,可以改变神经元的数量,但我目前正在尝试 6-10 个左右。
我感觉问题是因为我使用 sigmoid 传递函数(这是我的应用程序的要求),它仅输出 0 到 1 之间,而 sine() 的输出介于 -1 和 1 之间。尝试纠正我尝试将输出乘以 2,然后减去 1,但这并没有解决问题。我想我必须在某处进行某种转换才能使这项工作正常进行。
有任何想法吗?
Use a 线性输出单元.
这是一个简单的例子,使用R http://www.r-project.org:
set.seed(1405)
x <- sort(10*runif(50))
y <- sin(x) + 0.2*rnorm(x)
library(nnet)
nn <- nnet(x, y, size=6, maxit=40, linout=TRUE)
plot(x, y)
plot(sin, 0, 10, add=TRUE)
x1 <- seq(0, 10, by=0.1)
lines(x1, predict(nn, data.frame(x=x1)), col="green")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)