PyBrain 中 trainer.train() 的错误输出指的是什么?
What does the error output from trainer.train() in PyBrain refer to?
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
方法中)。如果训练样例包括 "importance",那么这些样例将用于加权平方误差;否则假设每个示例的重要性为 1.
计算每个示例的导数和更新参数后,train()
方法 returns 总误差除以总重要性,或所有已处理训练序列的加权平均误差。 (在代码中总 "importance" 或 "weight" 被称为 ponderation
。)
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
方法中)。如果训练样例包括 "importance",那么这些样例将用于加权平方误差;否则假设每个示例的重要性为 1.
计算每个示例的导数和更新参数后,train()
方法 returns 总误差除以总重要性,或所有已处理训练序列的加权平均误差。 (在代码中总 "importance" 或 "weight" 被称为 ponderation
。)