gpt4 book ai didi

python - Neurolab 重新训练网络

转载 作者:太空狗 更新时间:2023-10-30 01:33:16 24 4
gpt4 key购买 nike

我在 python 中使用 neurolab 创建神经网络。我创建了一个 newff 网络并使用默认的 train_bfgs 训练函数。我的问题很多次,训练在时代用完甚至达到错误目标之前就结束了。我环顾四周,在 neurolabs github 页面上找到了一篇帖子,他们在其中解释了为什么会发生这种情况。我的问题是,如果我重新运行该程序几次,它就会流行起来,训练开始,然后错误也会下降(可能一些随机的起始权重比其他权重好很多)。我想做的是在训练中进行一种检查,这样如果错误太高并且它训练的时期甚至不接近总数然后重新训练网络(有点像重新运行程序)(也许重置网络默认权重)

这是我写的,但显然它不起作用

trainingComplete = False
while not trainingComplete:
error = net.train(trainingData, TS, epochs=50, show=10, goal=0.001)
if len(error) < 0.8*epochs:
if len(error) > 0 and min(error) < 0.01:
trainingComplete = True
else:
net.reset()
continue
else:
trainingComplete = True

发生的事情是,当它通过第一个条件时,即训练时期太少,它会在重新启动之前执行 net.reset(),但是接下来,就没有训练了发生,这变成了一个无限循环。知道我错过了什么吗?

谢谢

最佳答案

所以,由于这几天没有得到答复,而且我认为这对 SO 来说真的很糟糕,所以我自己找到了一个可行的解决方法。我厌倦了使用 os.execv(__file__, sys.argv) 重新启动脚本,但在我的 mac 上这总是一个权限问题,而且它太脏了,所以这就是我得到它的方法现在开始工作。

# Train network
print('Starting training....')
trainingComplete = False
while not trainingComplete:
error = net.train(trainingData, TS, epochs=epochs, show=10, goal=0.001)
if len(error) < 0.8 * epochs:
if len(error) > 0 and min(error) < 0.01:
trainingComplete = True
else:
print('Restarting....')
net = createNeuralNetwork(trainingData, [hidden], 1)
net.trainf = train_bfgs
else:
trainingComplete = True

它很hacky但有点管用:

Starting training....
Restarting....
Restarting....
Restarting....
Restarting....
Restarting....
Restarting....
Restarting....
Restarting....
Epoch: 10; Error: 1.46314116045;
Epoch: 20; Error: 0.759613243435;
Epoch: 30; Error: 0.529574731856;
.
.

希望对大家有帮助

关于python - Neurolab 重新训练网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34496256/

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