提交 7896a7e9 authored 作者: James Bergstra's avatar James Bergstra

changing epsilon in numeric_grad abs_rel_err from parameter to constant

上级 d6fc8e30
...@@ -444,22 +444,26 @@ class numeric_grad(object): ...@@ -444,22 +444,26 @@ class numeric_grad(object):
self.gf = self.gf[0] self.gf = self.gf[0]
@staticmethod @staticmethod
def abs_rel_err(a, b, eps=1e-8): def abs_rel_err(a, b):
"""Return absolute and relative error between a and b. """Return absolute and relative error between a and b.
The relative error is a small number when a and b are close, relative to how big they are. The relative error is a small number when a and b are close, relative
to how big they are.
Formulas used: Formulas used:
abs_err = abs(a - b) abs_err = abs(a - b)
rel_err = abs_err / (abs(a) + abs(b)) rel_err = abs_err / max(abs(a) + abs(b), 1e-8)
The denominator is clipped at 1e-8 to avoid dividing by 0 when a and b
are both close to 0.
The tuple (abs_err, rel_err) is returned The tuple (abs_err, rel_err) is returned
""" """
abs_err = abs(a - b) abs_err = abs(a - b)
rel_err = abs_err / (abs(a) + abs(b) + eps) rel_err = abs_err / numpy.maximum(abs(a) + abs(b), 1e-8)
return (abs_err, rel_err) return (abs_err, rel_err)
def abs_rel_errors(self, g_pt, eps=1e-8): def abs_rel_errors(self, g_pt):
"""Return the abs and rel error of gradient estimate `g_pt` """Return the abs and rel error of gradient estimate `g_pt`
`g_pt` must be a list of ndarrays of the same length as self.gf, `g_pt` must be a list of ndarrays of the same length as self.gf,
...@@ -479,7 +483,7 @@ class numeric_grad(object): ...@@ -479,7 +483,7 @@ class numeric_grad(object):
raise ValueError( raise ValueError(
'argument element %i has wrong shape %s' % ( 'argument element %i has wrong shape %s' % (
i, str((a.shape, b.shape)))) i, str((a.shape, b.shape))))
errs.append(numeric_grad.abs_rel_err(a, b, eps)) errs.append(numeric_grad.abs_rel_err(a, b))
return errs return errs
def max_err(self, g_pt, abs_tol, rel_tol): def max_err(self, g_pt, abs_tol, rel_tol):
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论