mirror of
https://github.com/SheffieldML/GPy.git
synced 2026-06-11 15:15:15 +02:00
updated white, bias and rbf to new parameter handling
This commit is contained in:
parent
27724fd456
commit
21dd82f8d9
4 changed files with 64 additions and 51 deletions
|
|
@ -5,6 +5,7 @@
|
|||
from kernpart import Kernpart
|
||||
import numpy as np
|
||||
import hashlib
|
||||
from GPy.core.parameter import Param
|
||||
|
||||
class Bias(Kernpart):
|
||||
def __init__(self,input_dim,variance=1.):
|
||||
|
|
@ -14,20 +15,24 @@ class Bias(Kernpart):
|
|||
:param variance: the variance of the kernel
|
||||
:type variance: float
|
||||
"""
|
||||
super(Bias, self).__init__(input_dim)
|
||||
self.input_dim = input_dim
|
||||
self.num_params = 1
|
||||
self.name = 'bias'
|
||||
self._set_params(np.array([variance]).flatten())
|
||||
|
||||
def _get_params(self):
|
||||
return self.variance
|
||||
self.variance = Param(lambda: self.name+"_variance", variance, None)
|
||||
self.set_as_parameters(self.variance)
|
||||
#self._set_params(np.array([variance]).flatten())
|
||||
|
||||
def _set_params(self,x):
|
||||
assert x.shape==(1,)
|
||||
self.variance = x
|
||||
|
||||
def _get_param_names(self):
|
||||
return ['variance']
|
||||
# def _get_params(self):
|
||||
# return self.variance
|
||||
#
|
||||
# def _set_params(self,x):
|
||||
# assert x.shape==(1,)
|
||||
# self.variance = x
|
||||
#
|
||||
# def _get_param_names(self):
|
||||
# return ['variance']
|
||||
|
||||
def K(self,X,X2,target):
|
||||
target += self.variance
|
||||
|
|
|
|||
|
|
@ -22,35 +22,41 @@ class Kernpart(object):
|
|||
self.name = 'unnamed'
|
||||
# link to parameterized objects
|
||||
self._parameters_ = []
|
||||
|
||||
def set_as_parameter_named(self, name, gradient, index=None, *args, **kwargs):
|
||||
"""
|
||||
:param names: name of parameter to set as parameter
|
||||
:param gradient: gradient method to get the gradient of this parameter
|
||||
:param index: index of where to place parameter in printing
|
||||
:param args, kwargs: additional arguments to gradient
|
||||
|
||||
Convenience method to connect Kernpart parameters:
|
||||
parameter with name (attribute of this Kernpart) will be set as parameter with following name:
|
||||
|
||||
kernel_name + _ + parameter_name
|
||||
def set_as_parameters(self, *params):
|
||||
self._parameters_.extend(params)
|
||||
|
||||
To add the kernels name to the parameter name use this method to
|
||||
add parameters.
|
||||
"""
|
||||
self.set_as_parameter(name, getattr(self, name), gradient, index, *args, **kwargs)
|
||||
def set_as_parameter(self, name, array, gradient, index=None, *args, **kwargs):
|
||||
"""
|
||||
See :py:func:`GPy.core.parameterized.Parameterized.set_as_parameter`
|
||||
|
||||
Note: this method adds the kernels name in front of the parameter.
|
||||
"""
|
||||
p = Param(self.name+"_"+name, array, gradient, *args, **kwargs)
|
||||
if index is None:
|
||||
self._parameters_.append(p)
|
||||
else:
|
||||
self._parameters_.insert(index, p)
|
||||
self.__dict__[name] = p
|
||||
def parameters_changed(self):
|
||||
pass
|
||||
|
||||
# def set_as_parameter_named(self, name, gradient, index=None, *args, **kwargs):
|
||||
# """
|
||||
# :param names: name of parameter to set as parameter
|
||||
# :param gradient: gradient method to get the gradient of this parameter
|
||||
# :param index: index of where to place parameter in printing
|
||||
# :param args, kwargs: additional arguments to gradient
|
||||
#
|
||||
# Convenience method to connect Kernpart parameters:
|
||||
# parameter with name (attribute of this Kernpart) will be set as parameter with following name:
|
||||
#
|
||||
# kernel_name + _ + parameter_name
|
||||
#
|
||||
# To add the kernels name to the parameter name use this method to
|
||||
# add parameters.
|
||||
# """
|
||||
# self.set_as_parameter(name, getattr(self, name), gradient, index, *args, **kwargs)
|
||||
# def set_as_parameter(self, name, array, gradient, index=None, *args, **kwargs):
|
||||
# """
|
||||
# See :py:func:`GPy.core.parameterized.Parameterized.set_as_parameter`
|
||||
#
|
||||
# Note: this method adds the kernels name in front of the parameter.
|
||||
# """
|
||||
# p = Param(self.name+"_"+name, array, gradient, *args, **kwargs)
|
||||
# if index is None:
|
||||
# self._parameters_.append(p)
|
||||
# else:
|
||||
# self._parameters_.insert(index, p)
|
||||
# self.__dict__[name] = p
|
||||
#set_as_parameter.__doc__ += set_as_parameter.__doc__ # @UndefinedVariable
|
||||
# def _get_params(self):
|
||||
# raise NotImplementedError
|
||||
|
|
|
|||
|
|
@ -54,10 +54,11 @@ class RBF(Kernpart):
|
|||
lengthscale = np.ones(self.input_dim)
|
||||
|
||||
#self._set_params(np.hstack((variance, lengthscale.flatten())))
|
||||
self.variance = variance
|
||||
self.lengthscale = lengthscale
|
||||
self.set_as_parameter('variance', self.variance, None)
|
||||
self.set_as_parameter('lengthscale', self.lengthscale, None)
|
||||
self.variance = Param(lambda: self.name+'_variance', variance, None)
|
||||
self.lengthscale = Param(lambda: self.name+'_lengthscale', lengthscale, None)
|
||||
self.set_as_parameters(self.variance, self.lengthscale)
|
||||
# self.set_as_parameter('variance', self.variance, None)
|
||||
# self.set_as_parameter('lengthscale', self.lengthscale, None)
|
||||
|
||||
# initialize cache
|
||||
self._Z, self._mu, self._S = np.empty(shape=(3, 1))
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
from kernpart import Kernpart
|
||||
import numpy as np
|
||||
from ...core.parameter import Param
|
||||
|
||||
class White(Kernpart):
|
||||
"""
|
||||
|
|
@ -18,20 +19,20 @@ class White(Kernpart):
|
|||
self.input_dim = input_dim
|
||||
self.num_params = 1
|
||||
self.name = 'white'
|
||||
self.variance=variance
|
||||
self.set_as_parameter_named('variance', None)
|
||||
self.variance = Param(lambda: self.name+'_variance', variance, None)
|
||||
self.set_as_parameters(self.variance)
|
||||
# self._set_params(np.array([variance]).flatten())
|
||||
self._psi1 = 0 # TODO: more elegance here
|
||||
|
||||
def _get_params(self):
|
||||
return self.variance
|
||||
|
||||
def _set_params(self,x):
|
||||
assert x.shape==(1,)
|
||||
self.variance = x
|
||||
|
||||
def _get_param_names(self):
|
||||
return ['variance']
|
||||
# def _get_params(self):
|
||||
# return self.variance
|
||||
#
|
||||
# def _set_params(self,x):
|
||||
# assert x.shape==(1,)
|
||||
# self.variance = x
|
||||
#
|
||||
# def _get_param_names(self):
|
||||
# return ['variance']
|
||||
|
||||
def K(self,X,X2,target):
|
||||
if X2 is None:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue