class_docstr: Base class for Gaussian processes. 
class_docstr_tok: ["Base","class","for","Gaussian","processes","."]
docstr: Returns the training kernel matrix. Writing this as a separate method in case,
  the kernel computation can be done efficiently for a child class.
docstr_tok: ["Returns","the","training","kernel","matrix",".","Writing","this","as","a","separate","method","in","case",",","the","kernel","computation","can","be","done","efficiently","for","a","child","class","."]
code: def _get_training_kernel_matrix(self):
      """Returns the training kernel matrix. Writing this as a separate method in case,
      the kernel computation can be done efficiently for a child class.
      """
      return self.kernel(self.X, self.X)
  
imports: from __future__ import division
  from argparse import Namespace
  from itertools import product
  import sys
  import numpy
  from ..distributions.model import Model
  from ..distributions import continuous
  from ..distributions import discrete
  from ..utils.general_utils import stable_cholesky, draw_gaussian_samples, project_symmetric_to_psd_cone, solve_lower_triangular, solve_upper_triangular
  from ..utils.oper_utils import direct_ft_maximise, pdoo_maximise, random_maximise, random_sample_cts_dscr
  from ..utils.option_handler import get_option_specs, load_options
  from ..utils.reporters import get_reporter
label_desc: Use image node_id 7 for calling the GP obj's underlying member method code with example usage: obj._get_training_kernel_matrix() and returns: self