我该如何在pybrain中计算或监测神经网络的训练?

9

我有一个神经网络n pybrain,具有两个输入,一个隐藏层和一个输出层。我使用以下代码进行训练:

trainer = BackpropTrainer(net,ds)
trainer.trainUntilConvergence()

net 是神经网络,ds 是训练数据。

我的问题是如何计算完成训练所需的时间或如何监测训练的进度。谢谢。

2个回答

10

如果您正在使用maxEpochs,并且希望追踪完成的百分比,请通过继承BackpropTrainer(源代码在这里)并覆盖trainUntilConvergence来实现。通过计算epochs与maxEpochs之间的比率,可以跟踪完成的百分比。

如果不使用maxEpochs,则可以根据验证误差的平均变化率和continueEpochs的大小,做出剩余epoch数的预估。或者仅仅检查验证误差的变化速率。如果您想将epochs映射为时间,则需要对每个epoch的时间进行profiling并存储。


1
理想情况下,您希望使用trainEpochs()而不是修改trainUntilConvergence()。训练X个时期,检查结果,再训练X个时期。重复此过程,直到收敛或达到最大时期。 - NothingMore

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()

每个周期你将得到一个新的情节。虽然不是很好,但对我来说还算有效。

希望我能帮助你。


maxepochs 是一个整数。它没有 len 属性。你是不是想用 results.append(aux)? - user3103059

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接