diff --git a/GPy/core/model.py b/GPy/core/model.py index 9d8b89f4..cf45ee3c 100644 --- a/GPy/core/model.py +++ b/GPy/core/model.py @@ -104,7 +104,7 @@ class Model(Parameterized): raise e if len(self.optimization_runs): - i = np.argmin([o.f_opt for o in self.optimization_runs]) + i = np.nanargmin([o.f_opt for o in self.optimization_runs]) self.optimizer_array = self.optimization_runs[i].x_opt else: self.optimizer_array = initial_parameters diff --git a/GPy/util/warping_functions.py b/GPy/util/warping_functions.py index 37f4ef3e..00e24c4b 100644 --- a/GPy/util/warping_functions.py +++ b/GPy/util/warping_functions.py @@ -293,3 +293,25 @@ class TanhWarpingFunction_d(WarpingFunction): names = sum([['warp_tanh_%s_t%i' % (variables[n],q) for n in range(3)] for q in range(self.n_terms)],[]) names.append('warp_tanh_d') return names + + +class IdentityFunction(WarpingFunction): + """ + Identity warping function. This is for testing and sanity check purposes + and should not be used in practice. + """ + def __init__(self): + self.num_parameters = 0 + super(IdentityFunction, self).__init__(name='identity') + + def f(self, y): + return y + + def fgrad_y(self, y): + return 1.0 + + def fgrad_y_psi(self,y): + return 1.0 + + def f_inv(self,z): + return z