如何在pybrain中计算或监控神经网络的训练?
我在pybrain里有一个神经网络,它有两个输入,一个隐藏层和一个输出层。我用下面的代码来训练:
trainer = BackpropTrainer(net,ds)
trainer.trainUntilConvergence()
这里的net是指神经网络,而ds是训练数据。
我想问的是,是否可以计算完成训练所需的时间,或者我该如何监控训练的进度。谢谢。
2 个回答
2
我没有什么好补充的,只是想分享我用的代码:
maxepochs=20
results=[]
for i in range(len(maxepochs)):
aux = trainer.train()
results.extend(aux)
plt.figure()
plt.scatter(range(len(results[0])),results[0])
plt.draw()
每次循环你都会得到一个新的图表。虽然看起来不是很好,但对我来说是有效的。
希望这能帮到你。
10
你可以创建一个新的类来继承 BackpropTrainer
(源代码可以在这里找到),然后重写 trainUntilConvergence
方法。如果你使用 maxEpochs
,可以通过计算已经进行的轮次和总轮次的比例来跟踪完成的百分比。
如果不使用 maxEpochs
,你可以根据验证错误的平均变化率和 continueEpochs
的大小来大致估计剩余的轮次。或者,你也可以直接观察验证错误的变化速度。如果你想把轮次和时间对应起来,就需要记录每一轮所花的时间并保存下来。