From 77b4dc7d4408f74eeb55220b94fc2700b4911a1a Mon Sep 17 00:00:00 2001 From: mzwiessele Date: Wed, 11 Mar 2015 10:37:21 +0000 Subject: [PATCH] [optimize] added clear functionality for ipython notebook and kern input sensitivity error handling --- GPy/core/model.py | 2 +- GPy/core/verbose_optimization.py | 46 +++++++++++++++++--------------- GPy/kern/_src/add.py | 7 +++-- 3 files changed, 31 insertions(+), 24 deletions(-) diff --git a/GPy/core/model.py b/GPy/core/model.py index c5d318e7..b6ad66f3 100644 --- a/GPy/core/model.py +++ b/GPy/core/model.py @@ -213,7 +213,7 @@ class Model(Parameterized): self.obj_grads = np.clip(self._transform_gradients(self.objective_function_gradients()), -1e10, 1e10) return obj_f, self.obj_grads - def optimize(self, optimizer=None, start=None, messages=False, max_iters=1000, ipython_notebook=True, **kwargs): + def optimize(self, optimizer=None, start=None, messages=False, max_iters=1000, ipython_notebook=True, clear_after_finish=False, **kwargs): """ Optimize the model using self.log_likelihood and self.log_likelihood_gradient, as well as self.priors. diff --git a/GPy/core/verbose_optimization.py b/GPy/core/verbose_optimization.py index 1a87b3da..bd5afc25 100644 --- a/GPy/core/verbose_optimization.py +++ b/GPy/core/verbose_optimization.py @@ -11,7 +11,7 @@ def exponents(fnow, current_grad): return np.sign(exps) * np.log10(exps).astype(int) class VerboseOptimization(object): - def __init__(self, model, opt, maxiters, verbose=False, current_iteration=0, ipython_notebook=True): + def __init__(self, model, opt, maxiters, verbose=False, current_iteration=0, ipython_notebook=True, clear_after_finish=False): self.verbose = verbose if self.verbose: self.model = model @@ -22,6 +22,7 @@ class VerboseOptimization(object): self.opt_name = opt.opt_name self.model.add_observer(self, self.print_status) self.status = 'running' + self.clear = clear_after_finish self.update() @@ -37,30 +38,31 @@ class VerboseOptimization(object): self.ipython_notebook = False if self.ipython_notebook: - self.text.set_css('width', '100%') - #self.progress.set_css('width', '100%') - left_col = ContainerWidget(children = [self.progress, self.text]) right_col = ContainerWidget(children = [self.model_show]) - hor_align = ContainerWidget(children = [left_col, right_col]) + self.hor_align = ContainerWidget(children = [left_col, right_col]) - display(hor_align) + display(self.hor_align) + + try: + self.text.set_css('width', '100%') + left_col.set_css({ + 'padding': '2px', + 'width': "100%", + }) + + right_col.set_css({ + 'padding': '2px', + }) + + self.hor_align.set_css({ + 'width': "100%", + }) + except: + pass - left_col.set_css({ - 'padding': '2px', - 'width': "100%", - }) - - right_col.set_css({ - 'padding': '2px', - }) - - hor_align.set_css({ - 'width': "100%", - }) - - hor_align.remove_class('vbox') - hor_align.add_class('hbox') + self.hor_align.remove_class('vbox') + self.hor_align.add_class('hbox') left_col.add_class("box-flex1") right_col.add_class('box-flex0') @@ -148,3 +150,5 @@ class VerboseOptimization(object): print 'Optimization finished in {0:.5g} Seconds'.format(self.stop-self.start) print 'Optimization status: {0:.5g}'.format(self.status) print + elif self.clear: + self.hor_align.close() diff --git a/GPy/kern/_src/add.py b/GPy/kern/_src/add.py index 4c72a254..8059f68f 100644 --- a/GPy/kern/_src/add.py +++ b/GPy/kern/_src/add.py @@ -180,9 +180,12 @@ class Add(CombinationKernel): def input_sensitivity(self, summarize=True): if summarize: - return reduce(np.add, [k.input_sensitivity(summarize) for k in self.parts]) + i_s = np.zeros((self.input_dim)) + for k in self.parts: + i_s[k.active_dims] += k.input_sensitivity(summarize) + return i_s else: i_s = np.zeros((len(self.parts), self.input_dim)) from operator import setitem - [setitem(i_s, (i, Ellipsis), k.input_sensitivity(summarize)) for i, k in enumerate(self.parts)] + [setitem(i_s, (i, k.active_dims), k.input_sensitivity(summarize)) for i, k in enumerate(self.parts)] return i_s