我在尝试训练神经网络后遇到的问题并不是一个新问题:我得到的拟合值都是相同的。以下是一个简化的代码示例:
a <- c( 123, 223, 234, 226, 60) b <- c(60, 90, 53, 54, 91) d <- c(40,100,207,290,241) q <- cbind(a,b,d) nn <- neuralnet(a~b+d,data=q,hidden=2,threshold=0.01,err.fc="sse") nn$net.result
我之前找到的答案建议使用nnet包替代。然而,除非我将衰减参数设置为非零值,否则我得到的结果仍然相同。但我并不想仅仅因为衰减选项似乎“有效”就盲目使用它,我更希望理解我的neuralnet模型最初出了什么问题。
回答:
因此,在使用neuralnet
和nnet
对我的原始数据集进行尝试后,我发现了问题所在。这是由于随机选择的初始权重造成的。neuralnet
分配给它们的数值范围导致了这种奇怪的解决方案。然而,当我尝试使用startweights
语句手动将起始权重设置为从nnet
获得的值(在那里返回了合适的拟合值)时,我得到了“算法未收敛”的错误。所以我想我不得不放弃neuralnet
的图表,转而使用nnet
。