def evaluate_in_parallel(_x, calc_gradient, func, args, kwargs): _out = {} if calc_gradient: _out["__autograd__"], _ = run_and_trace(func, _x, *[_out]) else: func(_x, _out, *args, **kwargs) return _out
def func(_x): _out = {} if calc_gradient: _out["dF"], _ = run_and_trace(self._evaluate, _x, *[_out]) else: self._evaluate(_x, _out, *args, **kwargs) return _out
def func(_x): _out = {} if calc_gradient: grad, _ = run_and_trace(self._evaluate, _x, *[_out]) _out["__autograd__"] = grad else: self._evaluate(_x, _out, *args, **kwargs) return _out
def _evaluate_batch(self, X, calc_gradient, out, *args, **kwargs): if calc_gradient: out["__autograd__"], _ = run_and_trace(self._evaluate, X, *[out]) else: self._evaluate(X, out, *args, **kwargs) at_least2d(out) return out