mirror of
https://github.com/SheffieldML/GPy.git
synced 2026-05-07 02:52:40 +02:00
[kernel] plotting ard for prod and covariance plots added
This commit is contained in:
parent
59ba858aba
commit
12dba962f1
13 changed files with 130 additions and 116 deletions
|
|
@ -254,7 +254,4 @@ class Add(CombinationKernel):
|
|||
i_s[k._all_dims_active] += 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, k._all_dims_active), k.input_sensitivity(summarize)) for i, k in enumerate(self.parts)]
|
||||
return i_s
|
||||
return super(Add, self).input_sensitivity(summarize)
|
||||
|
|
|
|||
|
|
@ -341,7 +341,20 @@ class CombinationKernel(Kern):
|
|||
otherwise put everything into an array with shape (#kernels, input_dim)
|
||||
in the order of appearance of the kernels in the parameterized object.
|
||||
"""
|
||||
raise NotImplementedError("Choose the kernel you want to get the sensitivity for. You need to override the default behaviour for getting the input sensitivity to be able to get the input sensitivity. For sum kernel it is the sum of all sensitivities, TODO: product kernel? Other kernels?, also TODO: shall we return all the sensitivities here in the combination kernel? So we can combine them however we want? This could lead to just plot all the sensitivities here...")
|
||||
if not summarize:
|
||||
num_params = [0]
|
||||
parts = []
|
||||
def sum_params(x):
|
||||
if (not isinstance(x, CombinationKernel)) and isinstance(x, Kern):
|
||||
num_params[0] += 1
|
||||
parts.append(x)
|
||||
self.traverse(sum_params)
|
||||
i_s = np.zeros((num_params[0], self.input_dim))
|
||||
from operator import setitem
|
||||
[setitem(i_s, (i, k._all_dims_active), k.input_sensitivity(summarize)) for i, k in enumerate(parts)]
|
||||
return i_s
|
||||
else:
|
||||
raise NotImplementedError("Choose the kernel you want to get the sensitivity for. You need to override the default behaviour for getting the input sensitivity to be able to get the input sensitivity. For sum kernel it is the sum of all sensitivities, TODO: product kernel? Other kernels?, also TODO: shall we return all the sensitivities here in the combination kernel? So we can combine them however we want? This could lead to just plot all the sensitivities here...")
|
||||
|
||||
def _check_active_dims(self, X):
|
||||
return
|
||||
|
|
|
|||
|
|
@ -97,4 +97,11 @@ class Prod(CombinationKernel):
|
|||
target += p.gradients_X_diag(k/p.Kdiag(X),X)
|
||||
return target
|
||||
|
||||
|
||||
def input_sensitivity(self, summarize=True):
|
||||
if summarize:
|
||||
i_s = np.zeros((self.input_dim))
|
||||
for k in self.parts:
|
||||
i_s[k._all_dims_active] *= k.input_sensitivity(summarize)
|
||||
return i_s
|
||||
else:
|
||||
return super(Prod, self).input_sensitivity(summarize)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue