code: def body(self, features):
      
      features["targets"] = features["inputs"]
      is_training = self.hparams.mode == tf.estimator.ModeKeys.TRAIN
  
      # Input images.
      inputs = tf.to_float(features["targets_raw"])
  
      # Noise vector.
      z = tf.random_uniform([self.hparams.batch_size,
                             self.hparams.bottleneck_bits],
                            minval=-1, maxval=1, name="z")
  
      # Generator output: fake images.
      out_shape = common_layers.shape_list(inputs)[1:4]
      g = self.generator(z, is_training, out_shape)
  
      losses = self.losses(inputs, g)  # pylint: disable=not-callable
  
      summary_g_image = tf.reshape(
          g[0, :], [1] + common_layers.shape_list(inputs)[1:])
      tf.summary.image("generated", summary_g_image, max_outputs=1)
  
      if is_training:  # Returns an dummy output and the losses dictionary.
        return tf.zeros_like(inputs), losses
      return tf.reshape(g, tf.shape(inputs)), losses
docs: Body of the model.
  
      Args:
        features: a dictionary with the tensors.
  
      Returns:
        A pair (predictions, losses) where predictions is the generated image
        and losses is a dictionary of losses (that get added for the final loss).