class_docstr: Implements the Softmax (multiclass) likelihood used for GP classification.
  
  .. math::
      p(\mathbf y \mid \mathbf f) = \text{Softmax} \left( \mathbf W \mathbf f \right)
  
  :math:`\mathbf W` is a set of linear mixing weights applied to the latent functions :math:`\mathbf f`.
  
  :param num_features: Dimensionality of latent function :math:`\mathbf f`.
  :param num_classes: Number of classes.
  :param mixing_weights: (Default: `True`) Whether to learn a linear mixing weight :math:`\mathbf W` applied to
      the latent function :math:`\mathbf f`. If `False`, then :math:`\mathbf W = \mathbf I`.
  :param mixing_weights_prior: Prior to use over the mixing weights :math:`\mathbf W`.
  
  :ivar torch.Tensor mixing_weights: (Optional) mixing weights.
class_docstr_tok: ["Implements","the","Softmax","(","multiclass",")","likelihood","used","for","GP","classification",".","..","math",":",":","p","(","\\mathbf","y","\\mid","\\mathbf","f",")","=","\\text","{","Softmax","}","\\left","(","\\mathbf","W","\\mathbf","f","\\right",")",":","math",":","`","\\mathbf","W","`","is","a","set","of","linear","mixing","weights","applied","to","the","latent","functions",":","math",":","`","\\mathbf","f","`",".",":","param","num_features",":","Dimensionality","of","latent","function",":","math",":","`","\\mathbf","f","`",".",":","param","num_classes",":","Number","of","classes",".",":","param","mixing_weights",":","(","Default",":","`","True","`",")","Whether","to","learn","a","linear","mixing","weight",":","math",":","`","\\mathbf","W","`","applied","to","the","latent","function",":","math",":","`","\\mathbf","f","`",".","If","`","False","`",",","then",":","math",":","`","\\mathbf","W","=","\\mathbf","I","`",".",":","param","mixing_weights_prior",":","Prior","to","use","over","the","mixing","weights",":","math",":","`","\\mathbf","W","`",".",":","ivar","torch.Tensor","mixing_weights",":","(","Optional",")","mixing","weights","."]
code: def __call__(
      self,
      input: Union[Tensor, MultitaskMultivariateNormal],
      *args: Any,
      **kwargs: Any,
  ) -> Distribution:
      if isinstance(input, Distribution) and not isinstance(
          input, MultitaskMultivariateNormal
      ):
          warnings.warn(
              "The input to SoftmaxLikelihood should be a MultitaskMultivariateNormal (num_data x num_tasks). "
              "Batch MultivariateNormal inputs (num_tasks x num_data) will be deprectated.",
              DeprecationWarning,
          )
          input = MultitaskMultivariateNormal.from_batch_mvn(input)
      return super().__call__(input, *args, **kwargs)
  
file_path: gpytorch/gpytorch/likelihoods/softmax_likelihood.py
imports: import warnings
  from typing import Any, Optional, Union
  import torch
  from torch import Tensor
  from torch.distributions import Categorical, Distribution
  from ..distributions import base_distributions, MultitaskMultivariateNormal
  from ..priors import Prior
  from .likelihood import Likelihood
label_desc: Use image node_id 3 for calling the SoftmaxLikelihood obj's underlying member method code with example usage: obj.__call__(input) and returns: super