SheffieldML / GPy

Gaussian processes framework in python
BSD 3-Clause "New" or "Revised" License
2.04k stars 562 forks source link

Predict parameters of a mean_function #1022

Open pjpessi opened 1 year ago

pjpessi commented 1 year ago

Hi, I am trying use a mean function with parameters that will be learnt alongside the kernel. My kernel is k = GPy.kern.RBF(input_dim=1,lengthscale=ls,variance=var) I want a mean function to run m = GPy.models.GPRegression(x,y,kernel,mean_function=mean_func)

where

mean_func = GPy.core.Mapping(1,1)
mean_func.f = lambda x: c*x 
mean_func.update_gradients = lambda a,b: None

I get NameError: name 'c' is not defined But the thing is, I want c to be found by the regression.

I checked the parametric_mean_function that is shown here but I don't quite understand what I am doing wrong.

I would appreciate any help :)

MartinBubel commented 1 year ago

Hi @pjpessi sorry for the late response. "Lambdas are out!". Please try to use a proper function instead, e.g.

def get_mymeanfunc(c):
    def mymeanfunc(x):
        return c * x

    return mymeanfunc

mean_func.f = get_mymeanfunc(c)

Alternatively, it is always helpful if you provide a minimum example on how to reproduce the error.