def gradients_X(self, dL_dK, X, X2, target):
        # First account for gradients arising from presence of X in exponent.
        self._K_computations(X, X2)
        if X2 is None:
            _K_dist = 2*(X[:, None, :] - X[None, :, :])
        else:
            _K_dist = X[:, None, :] - X2[None, :, :] # don't cache this in _K_co
        gradients_X = (-2.*self.variance)*np.transpose((self._K_dvar/self._w2)[:, :, None]*_K_dist, (1, 0, 2))
        target += np.sum(gradients_X*dL_dK.T[:, :, None], 0)
        # Now account for gradients arising from presence of X in lengthscale.
        self._dK_computations(dL_dK)
        if X2 is None:
            target += 2.*self.mapping.df_dX(self._dL_dl[:, None], X)
        else:
            target += self.mapping.df_dX(self._dL_dl[:, None], X)
Invoke the fetch method on the default fetcher. Most users
dataset/ETHPy150Open SheffieldML/GPy/GPy/kern/src/todo/gibbs.py/Gibbs.gradients_X--crossover with--dataset/ETHPy150Open CollabQ/CollabQ/openid/fetchers.py/fetch