class_docstr: Common methods for testing ADVI surrogate posteriors.
class_docstr_tok: ["Common","methods","for","testing","ADVI","surrogate","posteriors","."]
code: def _test_fitting(self, model, surrogate_posterior):
      # Fit model.
      y = [0.2, 0.5, 0.3, 0.7]
      losses = optimization.fit_surrogate_posterior(
          lambda rate, concentration: model.log_prob(
              (rate, concentration, y)
          ),
          surrogate_posterior,
          num_steps=5,  # Don't optimize to completion.
          optimizer=tf_keras.optimizers.Adam(0.1),
          sample_size=10,
      )
  
      # Compute posterior statistics.
      with tf.control_dependencies([losses]):
          posterior_samples = surrogate_posterior.sample(100)
          posterior_mean = [
              tf.reduce_mean(x) for x in posterior_samples
          ]
          posterior_stddev = [
              tf.math.reduce_std(x) for x in posterior_samples
          ]
  
      self.evaluate(tf1.global_variables_initializer())
      self.evaluate([losses, posterior_mean, posterior_stddev])
  
imports: from absl.testing import parameterized
  import numpy
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import exp
  from tensorflow_probability.python.bijectors import fill_triangular
  from tensorflow_probability.python.bijectors import identity
  from tensorflow_probability.python.bijectors import joint_map
  from tensorflow_probability.python.bijectors import masked_autoregressive
  from tensorflow_probability.python.bijectors import sigmoid
  from tensorflow_probability.python.bijectors import softplus
  from tensorflow_probability.python.distributions import deterministic
  from tensorflow_probability.python.distributions import exponential
  from tensorflow_probability.python.distributions import gamma
  from tensorflow_probability.python.distributions import independent
  from tensorflow_probability.python.distributions import joint_distribution_coroutine
  from tensorflow_probability.python.distributions import joint_distribution_named
  from tensorflow_probability.python.distributions import joint_distribution_sequential
  from tensorflow_probability.python.distributions import laplace
  from tensorflow_probability.python.distributions import logistic
  from tensorflow_probability.python.distributions import normal
  from tensorflow_probability.python.distributions import sample
  from tensorflow_probability.python.distributions import student_t
  from tensorflow_probability.python.experimental.vi import surrogate_posteriors
  from tensorflow_probability.python.internal import nest_util
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.internal import samplers
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.internal import tf_keras
  from tensorflow_probability.python.vi import optimization
  from tensorflow.python.util import nest
label_desc: Use image node_id 5 for calling the _SurrogatePosterior obj's underlying member method code with example usage: obj._test_fitting(model, surrogate_posterior) without return types