class_docstr: The standard variational strategy, as defined by `Hensman et al. (2015)`_.
  This strategy takes a set of :math:`m \ll n` inducing points :math:`\mathbf Z`
  and applies an approximate distribution :math:`q( \mathbf u)` over their function values.
  (Here, we use the common notation :math:`\mathbf u = f(\mathbf Z)`.
  The approximate function distribution for any abitrary input :math:`\mathbf X` is given by:
  
  .. math::
  
      q( f(\mathbf X) ) = \int p( f(\mathbf X) \mid \mathbf u) q(\mathbf u) \: d\mathbf u
  
  This variational strategy uses "whitening" to accelerate the optimization of the variational
  parameters. See `Matthews (2017)`_ for more info.
  
  :param model: Model this strategy is applied to.
      Typically passed in when the VariationalStrategy is created in the
      __init__ method of the user defined model.
  :param inducing_points: Tensor containing a set of inducing
      points to use for variational inference.
  :param variational_distribution: A
      VariationalDistribution object that represents the form of the variational distribution :math:`q(\mathbf u)`
  :param learn_inducing_locations: (Default True): Whether or not
      the inducing point locations :math:`\mathbf Z` should be learned (i.e. are they
      parameters of the model).
  :param jitter_val: Amount of diagonal jitter to add for Cholesky factorization numerical stability
  
  .. _Hensman et al. (2015):
      http://proceedings.mlr.press/v38/hensman15.pdf
  .. _Matthews (2017):
      https://www.repository.cam.ac.uk/handle/1810/278022
class_docstr_tok: ["The","standard","variational","strategy",",","as","defined","by","`","Hensman","et","al",".","(","2015",")","`","_",".","This","strategy","takes","a","set","of",":","math",":","`","m","\\ll","n","`","inducing","points",":","math",":","`","\\mathbf","Z","`","and","applies","an","approximate","distribution",":","math",":","`","q","(","\\mathbf","u",")","`","over","their","function","values",".","(","Here",",","we","use","the","common","notation",":","math",":","`","\\mathbf","u","=","f","(","\\mathbf","Z",")","`",".","The","approximate","function","distribution","for","any","abitrary","input",":","math",":","`","\\mathbf","X","`","is","given","by",":","..","math",":",":","q","(","f","(","\\mathbf","X",")",")","=","\\int","p","(","f","(","\\mathbf","X",")","\\mid","\\mathbf","u",")","q","(","\\mathbf","u",")","\\",":","d\\mathbf","u","This","variational","strategy","uses","``","whitening","''","to","accelerate","the","optimization","of","the","variational","parameters",".","See","`","Matthews","(","2017",")","`","_","for","more","info",".",":","param","model",":","Model","this","strategy","is","applied","to",".","Typically","passed","in","when","the","VariationalStrategy","is","created","in","the","__init__","method","of","the","user","defined","model",".",":","param","inducing_points",":","Tensor","containing","a","set","of","inducing","points","to","use","for","variational","inference",".",":","param","variational_distribution",":","A","VariationalDistribution","object","that","represents","the","form","of","the","variational","distribution",":","math",":","`","q","(","\\mathbf","u",")","`",":","param","learn_inducing_locations",":","(","Default","True",")",":","Whether","or","not","the","inducing","point","locations",":","math",":","`","\\mathbf","Z","`","should","be","learned","(","i.e",".","are","they","parameters","of","the","model",")",".",":","param","jitter_val",":","Amount","of","diagonal","jitter","to","add","for","Cholesky","factorization","numerical","stability","..","_Hensman","et","al",".","(","2015",")",":","http",":","\/\/proceedings.mlr.press\/v38\/hensman15.pdf","..","_Matthews","(","2017",")",":","https",":","\/\/www.repository.cam.ac.uk\/handle\/1810\/278022"]
code: def _cholesky_factor(
      self, induc_induc_covar: LinearOperator
  ) -> TriangularLinearOperator:
      L = psd_safe_cholesky(
          to_dense(induc_induc_covar).type(
              _linalg_dtype_cholesky.value()
          )
      )
      return TriangularLinearOperator(L)
  
imports: import warnings
  from typing import Any, Dict, Iterable, Optional, Tuple
  import torch
  from linear_operator import to_dense
  from linear_operator.operators import CholLinearOperator, DiagLinearOperator, LinearOperator, MatmulLinearOperator, RootLinearOperator, SumLinearOperator, TriangularLinearOperator
  from linear_operator.utils.cholesky import psd_safe_cholesky
  from linear_operator.utils.errors import NotPSDError
  from torch import Tensor
  from gpytorch.variational._variational_strategy import _VariationalStrategy
  from gpytorch.variational.cholesky_variational_distribution import CholeskyVariationalDistribution
  from ..distributions import MultivariateNormal
  from ..models import ApproximateGP
  from ..settings import _linalg_dtype_cholesky, trace_mode
  from ..utils.errors import CachingError
  from ..utils.memoize import cached, clear_cache_hook, pop_from_cache_ignore_args
  from ..utils.warnings import OldVersionWarning
  from .None import _VariationalDistribution
label_desc: Use image node_id 2 for calling the VariationalStrategy obj's underlying member method code with example usage: obj._cholesky_factor(induc_induc_covar) and returns: TriangularLinearOperator