class_docstr: Base class for Gaussian Likelihoods, supporting general heteroskedastic noise models.
class_docstr_tok: ["Base","class","for","Gaussian","Likelihoods",",","supporting","general","heteroskedastic","noise","models","."]
code: def forward(
      self, function_samples: Tensor, *params: Any, **kwargs: Any
  ) -> Normal:
      noise = self._shaped_noise_covar(
          function_samples.shape, *params, **kwargs
      ).diagonal(dim1=-1, dim2=-2)
      return base_distributions.Normal(function_samples, noise.sqrt())
  
imports: import math
  import warnings
  from copy import deepcopy
  from typing import Any, Optional, Tuple, Union
  import torch
  from linear_operator.operators import LinearOperator, MaskedLinearOperator, ZeroLinearOperator
  from torch import Tensor
  from torch.distributions import Distribution, Normal
  from ..None import settings
  from ..constraints import Interval
  from ..distributions import base_distributions, MultivariateNormal
  from ..priors import Prior
  from ..utils.warnings import GPInputWarning
  from .likelihood import Likelihood
  from .noise_models import FixedGaussianNoise, HomoskedasticNoise, Noise
label_desc: Use image node_id 4 for calling the _GaussianLikelihoodBase obj's underlying member method code with example usage: obj.forward(function_samples) and returns: base_distributions