gpt4 book ai didi

python - 图书馆 neurolab 训练 newff

转载 作者:行者123 更新时间:2023-11-28 17:36:56 25 4
gpt4 key购买 nike

我在使用 python 和 neurolab 方面还很陌生,我在训练前馈神经网络时遇到了问题。我建立了如下网络:

net = nl.net.newff([[-1,1]]*64, [60,1])
net.init()
testerr = net.train(InputT, TargetT, epochs=100, show=1)

我的目标输出是一个介于 0 和 4 之间的向量。当我使用控制台中的 nl.train.train_bfgs 时:

testerr = net.train(InputT, TargetT, epochs=10, show=1)
Epoch: 1; Error: 55670.4462766;
Epoch: 2; Error: 55649.5;

如您所见,我将历元数固定为 100,但它在第二个历元和使用 Netresults=net.sim(InputCross) 进行网络测试后停止我有一个向量 1 作为测试输出数组(完全错误)。如果我使用其他训练函数,我有相同的输出测试向量全为 1,但在这种情况下,在训练期间,纪元达到我设置的数字,但显示的错误不会改变。如果目标输出向量在 -1 和 1 之间,则相同。有什么建议吗?非常感谢!

最佳答案

最后,在遇到同样的问题几个小时后,我解决了这个问题。

这是正在发生的事情:Neurolab 正在使用 train_bfgs 作为其标准训练算法。 train_bfgs 从 scipy.optimize 运行 fmin_bfgs。作为参数,给出了一个函数 epochf。训练网络时必须在每次迭代后运行此函数,以便 neurolab 正确退出。遗憾的是,当“优化成功终止”时,fmin_bfgs 无法执行此操作(可以将 self.kwargs['disp'] = 1 从/neurolab/train/spo.py 传递给 fmin_bfgs 以查看 scipy 的输出)。我没有进一步调查为什么 fmin_bfgs 返回“优化成功终止”,但这与错误收敛有关。

我已经尝试过使用 scipy 版本 12.0 到 0.15 的 python 2.7 和 python 3,而这种行为没有改变(如 this suggested )。

我的解决方案是简单地从 train_bfgs 训练切换到常规 train_gd(梯度下降),但我想任何其他训练算法都可以。

net = nl.net.newff(inputNodes, [ hidden, output])

#change traning func
net.trainf = nl.train.train_gd

为了完整性,我测试的代码是:

import neurolab as nl
hidden = 10
output = 1
test = [[0],[0],[0],[1],[1]]
net = nl.net.newff([[0,1]], [ 10, 1])
err = net.train(test, test, epochs = 500, show=1)

该问题只是偶尔出现,需要反复测试

编辑:问题也在 https://github.com/zueve/neurolab/issues/25 中描述。

祝你好运!

关于python - 图书馆 neurolab 训练 newff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29564946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com