pybrain什么是总误差,它告诉我们什么

时间:2014-09-21 13:33:34

标签: python pybrain

所以我对python和pybrain很新,但是我在网上找到了一个代码并在其上运行了我自己的数据。当我看到python shell时,我看到的是

Total error: 0.119794950183
Total error: 0.120078064472
Total error: 0.119334171755
Total error: 0.119215954708
Total error: 0.119876371059
Total error: 0.119621091587
Total error: 0.119983293587
Total error: 0.119849213731
Total error: 0.119638354788
Total error: 0.119574076444
Total error: 0.119634911454
Total error: 0.119601510912
Total error: 0.119665039573
Total error: 0.11944303853
Total error: 0.11950617361
Total error: 0.120088611572
Total error: 0.119774446939
Total error: 0.120016814426
Total error: 0.119605678505
Total error: 0.119998864263
Total error: 0.120071472045
Total error: 0.11973079242
Total error: 0.119790825048
Total error: 0.119558913137
Total error: 0.12024443015
Total error: 0.119525196587
Total error: 0.12008456943
Total error: 0.119641361568
Total error: 0.119745707444
Total error: 0.120065315199

1)总误差意味着什么以及它在做什么

这是代码

from pybrain.datasets import SupervisedDataSet
from pybrain.tools.shortcuts import buildNetwork
from pybrain.supervised.trainers import BackpropTrainer

from pybrain.datasets            import ClassificationDataSet
from pybrain.utilities           import percentError
from pybrain.tools.shortcuts     import buildNetwork
from pybrain.supervised.trainers import BackpropTrainer
from pybrain.structure.modules   import SoftmaxLayer

from pylab import ion, ioff, figure, draw, contourf, clf, show, hold, plot
from scipy import diag, arange, meshgrid, where
from numpy.random import multivariate_normal

ds = SupervisedDataSet(2,1)

tf = open('weather.csv','r')

for line in tf.readlines():
    try:
        data = [float(x) for x in line.strip().split(',') if x != '']
        indata =  tuple(data[:2])
        outdata = tuple(data[2:])
        ds.addSample(indata,outdata)
    except ValueError,e:
            print "error",e,"on line"

n = buildNetwork(ds.indim,8,8,ds.outdim,recurrent=True)
t = BackpropTrainer(n,learningrate=0.01,momentum=0.5,verbose=True)
t.trainOnDataset(ds,5000)
t.testOnData(verbose=True)

1 个答案:

答案 0 :(得分:3)

要回答您关于“它告诉我们什么”的问题:查看总错误可以让您对网络是否可以在训练时间更长的情况下做得更好。如果总错误从一次迭代到下一次迭代发生了很大变化,那么这将表明它还没有稳定到最终状态。可能值得看看这个链接:

http://pybrain.org/docs/api/supervised/trainers.html

在那里你会看到对trainEpochs和trainUntilConvergence的引用。您所看到的全部错误表明(虽然没有证明)您的网络已经融合到最终状态,并且通过额外的培训不会有太大改善。

总之,如果你看到的totalError在停止训练时看起来非常稳定,那么在你的情况下,你可能不必担心它。只需查看测试输出并确定您的网络是否正在为您的目的做好工作。