def predict_noiseless(self, Xnew, full_cov=False, kern=None):
<EOL>mu, var = self._raw_predict(Xnew, full_cov=full_cov, kern=kern)<EOL>if self.normalizer is not None:<EOL><INDENT>mu, var = self.normalizer.inverse_mean(mu), self.normalizer.inverse_variance(var)<EOL><DEDENT>return mu, var<EOL>
Predict the underlying function  f at the new point(s) Xnew.

:param Xnew: The points at which to make a prediction
:type Xnew: np.ndarray (Nnew x self.input_dim)
:param full_cov: whether to return the full covariance matrix, or just the diagonal
:type full_cov: bool
:param kern: The kernel to use for prediction (defaults to the model kern).

:returns: (mean, var):
    mean: posterior mean, a Numpy array, Nnew x self.input_dim
    var: posterior variance, a Numpy array, Nnew x 1 if full_cov=False, Nnew x Nnew otherwise

   If full_cov and self.input_dim > 1, the return shape of var is Nnew x Nnew x self.input_dim.
   If self.input_dim == 1, the return shape is Nnew x Nnew.
   This is to allow for different normalizations of the output dimensions.