def checkGradient(self,h=1e-6,verbose=True):
        """ utility function to check the gradient of the gp """
        grad_an = self.LMLgrad()
        grad_num = {}
        params0 = self.params.copy()
        for key in list(self.params.keys()):
            paramsL = params0.copy()
            paramsR = params0.copy()
            grad_num[key] = SP.zeros_like(self.params[key])
            e = SP.zeros(self.params[key].shape[0])
            for i in range(self.params[key].shape[0]):
                e[i] = 1
                paramsL[key]=params0[key]-h*e
                paramsR[key]=params0[key]+h*e
                lml_L = self.LML(paramsL)
                lml_R = self.LML(paramsR)
                grad_num[key][i] = (lml_R-lml_L)/(2*h)
                e[i] = 0
            if verbose:
                print(('%s:'%key))
                print((abs(grad_an[key]-grad_num[key])))
                print('')
        self.setParams(params0)