class_docstr: Abstract base class for models based on GPyTorch models.
  
  The easiest way to use this is to subclass a model from a GPyTorch model
  class (e.g. an `ExactGP`) and this `GPyTorchModel`. See e.g. `SingleTaskGP`.
  
  :meta private:
class_docstr_tok: ["Abstract","base","class","for","models","based","on","GPyTorch","models",".","The","easiest","way","to","use","this","is","to","subclass","a","model","from","a","GPyTorch","model","class","(","e.g",".","an","`","ExactGP","`",")","and","this","`","GPyTorchModel","`",".","See","e.g",".","`","SingleTaskGP","`",".",":","meta","private",":"]
docstr: The number of outputs of the model.
docstr_tok: ["The","number","of","outputs","of","the","model","."]
code: def num_outputs(self) -> int:
      r"""The number of outputs of the model."""
      return self._num_outputs
  
imports: from __future__ import annotations
  import itertools
  import warnings
  from abc import ABC
  from copy import deepcopy
  from typing import Any, List, Optional, Tuple, TYPE_CHECKING, Union
  import torch
  from botorch.acquisition.objective import PosteriorTransform
  from botorch.exceptions.errors import BotorchTensorDimensionError, InputDataError
  from botorch.exceptions.warnings import _get_single_precision_warning, BotorchTensorDimensionWarning
  from botorch.models.model import Model, ModelList
  from botorch.models.utils import _make_X_full, add_output_dim, gpt_posterior_settings, mod_batch_shape, multioutput_to_batch_mode_transform
  from botorch.posteriors.fully_bayesian import GaussianMixturePosterior
  from botorch.posteriors.gpytorch import GPyTorchPosterior
  from botorch.utils.multitask import separate_mtmvn
  from botorch.utils.transforms import is_ensemble
  from gpytorch.distributions import MultitaskMultivariateNormal, MultivariateNormal
  from gpytorch.likelihoods.gaussian_likelihood import FixedNoiseGaussianLikelihood
  from linear_operator.operators import BlockDiagLinearOperator, CatLinearOperator
  from torch import Tensor
label_desc: Use image node_id 3 for calling the GPyTorchModel obj's underlying member method code with example usage: obj.num_outputs() and returns: self