code: def __init__(self):
      self._model = tfd.JointDistributionSequential(
          [
              tfd.Sample(tfd.Normal(0.0, 1.0), 3),
              tfd.CholeskyLKJ(dimension=3, concentration=1.0),
          ]
      )
  
      super(TestStructuredModel, self).__init__(
          default_event_space_bijector=[
              tfb.Identity(),
              tfb.CorrelationCholesky(),
          ],
          event_shape=self._model.event_shape,
          dtype=self._model.dtype,
          name="test_structured_model",
          pretty_name="TestStructuredModel",
          sample_transformations=dict(
              first_moment=targets.Model.SampleTransformation(
                  fn=lambda x: x,
                  pretty_name="First moment",
                  # These are wrong, we'll only be checking them for
                  # shapes/dtypes.
                  ground_truth_mean=(
                      tf.nest.map_structure(
                          tf.zeros,
                          self._model.event_shape,
                          self._model.dtype,
                      )
                  ),
                  ground_truth_standard_deviation=tf.nest.map_structure(
                      tf.zeros,
                      self._model.event_shape,
                      self._model.dtype,
                  ),
                  ground_truth_mean_standard_error=tf.nest.map_structure(
                      tf.zeros,
                      self._model.event_shape,
                      self._model.dtype,
                  ),
                  ground_truth_standard_deviation_standard_error=(
                      tf.nest.map_structure(
                          tf.zeros,
                          self._model.event_shape,
                          self._model.dtype,
                      )
                  ),
              ),
              second_moment=targets.Model.SampleTransformation(
                  fn=lambda x: tf.nest.map_structure(tf.square, x),
                  pretty_name="Second moment",
                  # These are wrong, we'll only be checking them for
                  # shapes/dtypes.
                  ground_truth_mean=(
                      tf.nest.map_structure(
                          tf.zeros,
                          self._model.event_shape,
                          self._model.dtype,
                      )
                  ),
                  ground_truth_standard_deviation=tf.nest.map_structure(
                      tf.zeros,
                      self._model.event_shape,
                      self._model.dtype,
                  ),
                  ground_truth_mean_standard_error=tf.nest.map_structure(
                      tf.zeros,
                      self._model.event_shape,
                      self._model.dtype,
                  ),
                  ground_truth_standard_deviation_standard_error=(
                      tf.nest.map_structure(
                          tf.zeros,
                          self._model.event_shape,
                          self._model.dtype,
                      )
                  ),
              ),
          ),
      )
  
imports: from absl.testing import parameterized
  import numpy
  import tensorflow.compat.v2
  import tensorflow_probability
  from tensorflow_probability.python.internal import test_util
  from inference_gym import targets
  from inference_gym.internal import test_util
label_desc: Use image node_id 1 to create a new TestStructuredModel object from inherited base classes: targets with example: obj = TestStructuredModel()