我在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()
,但是之后,没有训练发生,这就变成了一个无限循环。
你知道我错过了什么吗?在
谢谢
所以, 因为这几天都没人回答,我觉得这真的很糟糕,所以我就自己找了份工作。我厌倦了使用
os.execv(__file__, sys.argv)
重新启动脚本,但在我的mac上,这总是一个权限问题,加上它太脏了,所以我现在就让它工作。在它相当老套,但有点管用:
^{pr2}$希望这能帮助别人
相关问题 更多 >
编程相关推荐