class_docstr: Schur complement kernel, damped by scalar factors.
  
  This kernel is the same as the SchurComplement kernel, except we multiply by
  the following factor:
  
  `(df + b - 2) / (df + n - 2)`, where:
  
    * `df` is the degrees of freedom parameter.
    * `n` is the number of observations for `fixed_inputs`.
    * `b` is `||divisor_matrix_cholesky^-1 fixed_inputs_observations|| ** 2`.
class_docstr_tok: ["Schur","complement","kernel",",","damped","by","scalar","factors",".","This","kernel","is","the","same","as","the","SchurComplement","kernel",",","except","we","multiply","by","the","following","factor",":","`","(","df","+","b","-","2",")","\/","(","df","+","n","-","2",")","`",",","where",":","*","`","df","`","is","the","degrees","of","freedom","parameter",".","*","`","n","`","is","the","number","of","observations","for","`","fixed_inputs","`",".","*","`","b","`","is","`","||divisor_matrix_cholesky^-1","fixed_inputs_observations||","*","*","2","`","."]
code: def _compute_scaling(self):
      if (
          self.fixed_inputs_observations is None
          or self.schur_complement._is_fixed_inputs_empty()
      ):  # pylint:disable=protected-access
          return dtype_util.as_numpy_dtype(self.df.dtype)(1.0)
  
      df = tf.convert_to_tensor(self.df)
      numerator = df - 2.0
      denominator = df - 2.0
  
      fixed_inputs_observations = tf.convert_to_tensor(
          self.fixed_inputs_observations
      )
      if self.observations_is_missing is not None:
          fixed_inputs_observations = tf.where(
              self.observations_is_missing,
              tf.zeros([], df.dtype),
              fixed_inputs_observations,
          )
  
      b = tf.linalg.LinearOperatorLowerTriangular(
          self.divisor_matrix_cholesky()
      ).solvevec(fixed_inputs_observations)
      b = tf.reduce_sum(b**2, axis=-1)
      numerator = numerator + b
      n = tf.cast(ps.shape(fixed_inputs_observations)[-1], b.dtype)
      denominator = denominator + n
      if self.observations_is_missing is not None:
          denominator = denominator - tf.cast(
              tf.math.count_nonzero(
                  self.observations_is_missing, axis=-1
              ),
              self.dtype,
          )
  
      return numerator / denominator
  
imports: import tensorflow.compat.v2
  from tensorflow_probability.python import util
  from tensorflow_probability.python.bijectors import softplus
  from tensorflow_probability.python.distributions import cholesky_util
  from tensorflow_probability.python.distributions import student_t_process
  from tensorflow_probability.python.distributions.internal import stochastic_process_util
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import nest_util
  from tensorflow_probability.python.internal import parameter_properties
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.internal import tensor_util
  from tensorflow_probability.python.math.psd_kernels import positive_semidefinite_kernel
  from tensorflow_probability.python.math.psd_kernels import schur_complement
  from tensorflow.python.util import deprecation
label_desc: Use image node_id 8 for calling the DampedSchurComplement obj's underlying member method code with example usage: obj._compute_scaling() and returns: unknown, dtype_util