class_docstr: Standard GPLVM where the likelihood can be optimised with respect to the latent X.
docstr: Initialise GPLVM object. This method only works with a Gaussian likelihood.
  
  :param data: y data matrix.
  :param latent_dim: the number of latent dimensions (Q)
  :param X_data_mean: latent positions, for the initialisation of the latent space.
  :param kernel: kernel specification, by default Squared Exponential
  :param mean_function: mean function, by default None.
docstr_tok: ["Initialise","GPLVM","object",".","This","method","only","works","with","a","Gaussian","likelihood",".",":","param","data",":","y","data","matrix",".",":","param","latent_dim",":","the","number","of","latent","dimensions","(","Q",")",":","param","X_data_mean",":","latent","positions",",","for","the","initialisation","of","the","latent","space",".",":","param","kernel",":","kernel","specification",",","by","default","Squared","Exponential",":","param","mean_function",":","mean","function",",","by","default","None","."]
code: def __init__(
      self,
      data: OutputData,
      latent_dim: int,
      X_data_mean: Optional[tf.Tensor] = None,
      kernel: Optional[Kernel] = None,
      mean_function: Optional[MeanFunction] = None,
  ):
      """
      Initialise GPLVM object. This method only works with a Gaussian likelihood.
  
      :param data: y data matrix.
      :param latent_dim: the number of latent dimensions (Q)
      :param X_data_mean: latent positions, for the initialisation of the latent space.
      :param kernel: kernel specification, by default Squared Exponential
      :param mean_function: mean function, by default None.
      """
      if X_data_mean is None:
          X_data_mean = pca_reduce(data, latent_dim)
  
      num_latent_gps = X_data_mean.shape[1]
      if num_latent_gps != latent_dim:
          msg = "Passed in number of latent {0} does not match initial X {1}."
          raise ValueError(msg.format(latent_dim, num_latent_gps))
  
      if mean_function is None:
          mean_function = Zero()
  
      if kernel is None:
          kernel = kernels.SquaredExponential(
              lengthscales=tf.ones((latent_dim,))
          )
  
      if data.shape[1] < num_latent_gps:
          raise ValueError("More latent dimensions than observed.")
  
      gpr_data = (Parameter(X_data_mean), data_input_to_tensor(data))
      super().__init__(gpr_data, kernel, mean_function=mean_function)
  
imports: from typing import Optional
  import numpy
  import tensorflow
  from check_shapes import check_shapes, inherit_check_shapes
  from ..None import covariances, kernels, likelihoods
  from ..base import InputData, MeanAndVariance, OutputData, Parameter, RegressionData, TensorType
  from ..config import default_float, default_jitter
  from ..expectations import expectation
  from ..inducing_variables import InducingPoints
  from ..kernels import Kernel
  from ..mean_functions import MeanFunction, Zero
  from ..probability_distributions import DiagonalGaussian
  from ..utilities import assert_params_false, positive, to_default_float
  from ..utilities.ops import pca_reduce
  from .gpr import GPR
  from .model import GPModel
  from .training_mixins import InternalDataTrainingLossMixin
  from .util import InducingVariablesLike, data_input_to_tensor, inducingpoint_wrapper
label_desc: Use image node_id 1 to create a new GPLVM object from inherited base classes: GPR with example: obj = GPLVM(data, latent_dim, X_data_mean, kernel, mean_function)