PyBrain Trainer.train()函数显示的错误是什么意思?更具体地说,当我这样做时:

>>> trainer = BackpropTrainer(fnn, ds_train)
>>> trainer.train()
0.024


0.024是什么意思?我问是因为当我训练我的神经网络时,我得到3000的错误输出。

>>> trainer.train()
3077.0233


有人能解释这个数字的意义吗?

最佳答案

该数字似乎是训练过程中的平均加权误差。

code on GitHub很容易理解。这是它的编辑版本:

def train(self):
    self.module.resetDerivatives()
    errors = 0
    ponderation = 0.
    for seq in self.ds._provideSequences():
        e, p = self._calcDerivs(seq)
        errors += e
        ponderation += p
        self.module.params[:] = self.descent(self.module.derivs, errors)
        self.module.resetDerivatives()
    return errors / ponderation

def _calcDerivs(self, seq):
    self.module.reset()
    for sample in seq:
        self.module.activate(sample[0])
    error = 0
    ponderation = 0.
    for offset, sample in reversed(list(enumerate(seq))):
        target = sample[1]
        outerr = target - self.module.outputbuffer[offset]
        if len(sample) > 2:  # explicitly weighted examples
            importance = sample[2]
            error += 0.5 * dot(importance, outerr ** 2)
            ponderation += sum(importance)
            self.module.backActivate(outerr * importance)
        else:  # examples have unspecified weight (assume 1)
            error += 0.5 * sum(outerr ** 2)
            ponderation += len(target)
            self.module.backActivate(outerr)
    return error, ponderation


它基本上遍历您提供的数据集,在数据集中的每个训练示例上(_calcDerivs方法)计算网络的平方误差。如果训练示例包括“重要性”,则将这些加权用于加权平方误差;否则,假设每个示例的重要性为1。

在计算了每个示例的导数并更新了参数之后,train()方法返回总误差除以总重要性,或者返回已处理的所有训练序列的加权平均误差。 (在代码中,总的“重要性”或“重量”称为ponderation。)

关于python - PyBrain中trainer.train()的错误输出指的是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31865021/

10-12 19:34