我是R中神经网络的新手。我试图模仿在java中使用neuroph实现的以下行为。
类型 - 多层感知器,输入 - 7,输出 - 1,隐藏 - 5个神经元,传递函数 - sigmoid,学习规则 - 反向传播,最大误差 - 0.01,学习速率 - 0.2
以下是我实施的R代码。
net.result <- neuralnet(Output ~ Input1 + Input2 + Input3 + Input4 + Input5 + Input6 + Input7,
traindata, algorithm = "backprop", hidden = 5,
threshold = 0.01, learningrate = 0.2, act.fct = "logistic",
linear.output = FALSE, rep =50, stepmax = 100)
数据相对较小(120行),以下是使用的训练数据样本。请注意,输入已标准化并在0和1之间缩放。
Input1 Input2 Input3 Input4 Input5 Input6 Input7 Output
1 0 0 0 0 0 0 0 0
2 0 0 0 0 0 1 0.0192307692 0
3 0 0 0 0 1 0 0.125 0
4 0 0 0 0 1 1 0.0673076923 0
5 0 0 0 1 0 0 0.1971153846 0
6 0 0 0 1 0 1 0.2644230769 0.3333333333
以下是我执行上述命令时收到的警告。
Warning message:
algorithm did not converge in 50 of 50 repetition(s) within the stepmax
有关为何发生这种情况的任何澄清?
答案 0 :(得分:1)
将“stepmax”从100增加到某个大值,以便为算法提供更多的收敛时间。但是,更好的方法是减少隐藏节点的数量,然后重新运行神经网络
答案 1 :(得分:0)
您可以更改隐藏图层/隐藏节点的数量,并通过反复试验尝试不同的组合。您可以尝试将MLP中隐藏层的数量增加到2.具有2个隐藏层的MLP很少使用,但它们在数据中的复杂模式的情况下确实有用。从理论上讲,具有2个隐藏层的MLP可用于近似任何函数。