在培训期间,pybrain中的总误差是什么意思?

时间:2016-04-03 10:56:56

标签: python pybrain

这是我的代码:

from pybrain.structure import *
from pybrain.datasets import SupervisedDataSet
from pybrain.supervised.trainers import BackpropTrainer
fnn = FeedForwardNetwork()
inLayer = LinearLayer(2, name='inLayer')
hiddenLayer = SigmoidLayer(7, name='hiddenLayer0')
outLayer = LinearLayer(1, name='outLayer')
fnn.addInputModule(inLayer)
fnn.addModule(hiddenLayer)
fnn.addOutputModule(outLayer)
in_to_hidden = FullConnection(inLayer, hiddenLayer)
hidden_to_out = FullConnection(hiddenLayer, outLayer)
fnn.addConnection(in_to_hidden)
fnn.addConnection(hidden_to_out)
fnn.sortModules()
from pybrain.supervised.trainers import BackpropTrainer
DS = SupervisedDataSet(2,1)
for i in range(100):
    for j in range(100):
        DS.addSample([i,j], [i*j])
X = DS['input']
Y = DS['target']
dataTrain, dataTest = DS.splitWithProportion(0.8)
xTrain, yTrain = dataTrain['input'], dataTrain['target']
xTest, yTest = dataTest['input'], dataTest['target']
trainer = BackpropTrainer(fnn, dataTrain, verbose = True, learningrate=0.01)
trainer.trainUntilConvergence(maxEpochs=1000)

当我运行此代码时,每个时代都得到total error。我无法理解它。total error是什么意思?它看起来有点大。

以下是total error的一些内容:

Total error:  2421098.90561
Total error:  2421079.7975
Total error:  2419968.22232
Total error:  2423552.04539
Total error:  2423015.61675

1 个答案:

答案 0 :(得分:1)

您的程序逻辑存在缺陷。您可能会误解整个神经网络训练的概念以及一个时代。以下几行是您的问题:

for i in range(100):
    trainer.trainEpochs( 1 )

您不是在训练网络100个时代,相反,在每次迭代中,您使用一个纪元训练您的网络,然后您停止并从头开始。

你不需要for循环。删除for循环,只需指定您想要100个纪元:

trainer.trainEpochs(100)

您可以将时代视为学习过程中的一次迭代。

您显示的“总错误”告诉​​我您如何设置网络有问题。使用您正在使用的数据和三层网络时,错误应该不断减少,直到它收敛到一个小值。

这是什么“总错误”?每次训练网络时,网络都在学习如何将输入转换为您提供的输出。 “总误差”是平均重建误差:预期输出减去实际获得的输出(平方),以及所有输入的平均值。