      def output_shapes(self) -> List[List[Tuple]]:
          """ list: A list of list of shape tuples for the outputs of the model with the batch
          dimension removed. The outer list contains 2 sub-lists (one for each side "a" and "b").
          The inner sub-lists contain the output shapes for that side. """
          shapes = [tuple(K.int_shape(output)[-3:]) for output in self._model.outputs]
          return [shapes[:len(shapes) // 2], shapes[len(shapes) // 2:]]
  
      @property
      def iterations(self) -> int:
          """ int: The total number of iterations that the model has trained. """
 
</s> remove         logger.debug("Compiled Model: %s", self._model)
 </s> add         logger.debug("Compiled Model: %s", self.model) </s> remove         face_losses = [(self._loss_dict[v], self._config.get(f"loss_weight_{k[-1]}", 100))
                       for k, v in sorted(self._config.items())
 </s> add         face_losses = [(lossname, self._config.get(f"loss_weight_{k[-1]}", 100))
                       for k, lossname in sorted(self._config.items()) </s> remove         loss_func: :class:`keras.losses.Loss`
 </s> add         loss_function: str </s> remove                      self._model.output_names, new_names)
        self._model.output_names = new_names
 </s> add                      self.model.output_names, new_names)
        self.model.output_names = new_names
        shapes = [tuple(K.int_shape(output)[-3:]) for output in self.model.outputs]
      def output_shapes(self) -> List[List[Tuple]]:
          """ list: A list of list of shape tuples for the outputs of the model with the batch
          dimension removed. The outer list contains 2 sub-lists (one for each side "a" and "b").
          The inner sub-lists contain the output shapes for that side. """
        shapes = [tuple(K.int_shape(output)[-3:]) for output in self.model.outputs]
          return [shapes[:len(shapes) // 2], shapes[len(shapes) // 2:]]
  
      @property
      def iterations(self) -> int:
          """ int: The total number of iterations that the model has trained. """
keep keep keep keep replace keep keep keep keep keep
 Core updates
   - Change loss loading mechanism
   - Autosize tooltips based on content size
   - Random linting + code modernisation 
plugins/train/model/_base/model.py