code: def compile(self, optimizer, loss, metrics=None):
          
          if isinstance(loss, six.string_types):
              loss = [loss]
          if metrics is None:
              metrics = []
          if isinstance(metrics, six.string_types):
              metrics = [metrics]
  
          self._stats_to_inference = loss + metrics + [TOTAL_LOSS_NAME]
          setup_keras_trainer(
              self.trainer, get_model=self.get_model,
              input_signature=self.input_signature,
              target_signature=self.target_signature,
              input=self.input,
              optimizer=optimizer,
              loss=loss,
              metrics=metrics)
docs: Args:
              optimizer (tf.train.Optimizer):
              loss, metrics: string or list of strings