          if len(self.input_shape) == 3:
              input_shapes = [self.input_shape, self.input_shape]
          else:
              input_shapes = self.input_shape
          inputs = [Input(shape=shape, name="face_in_{}".format(side))
                    for side, shape in zip(("a", "b"), input_shapes)]
          logger.debug("inputs: %s", inputs)
          return inputs
  
      def build_model(self, inputs):
 
</s> remove             lossmsg = ["face_{}: {:.5f}".format(side, avg)
 </s> add             lossmsg = [f"face_{side}: {avg:.5f}" </s> remove             partial_x, _ = tf.split(inputs,
                                    [partial_size, layer_size - partial_size],
                                    axis=self.axis)
 </s> add             partial_x, _ = tf.split(  # pylint:disable=redundant-keyword-arg,no-value-for-parameter
                inputs,
                [partial_size, layer_size - partial_size],
                axis=self.axis) </s> remove         images = dict()
 </s> add         images = {} </s> remove             msg += " - Average loss since last save: {}".format(", ".join(lossmsg))
 </s> add             msg += f" - Average loss since last save: {', '.join(lossmsg)}" </s> remove         # loss length of unique should be 3:
        # - decoder_both, 1, 2
        # - docoder_a, decoder_b, 1
        split_output = len(np.unique(model_outputs[..., :2])) != 3
 </s> add 
        inputs = [Input(shape=shape, name=f"face_in_{side}")
          if len(self.input_shape) == 3:
              input_shapes = [self.input_shape, self.input_shape]
          else:
              input_shapes = self.input_shape
        inputs = [Input(shape=shape, name=f"face_in_{side}")
                    for side, shape in zip(("a", "b"), input_shapes)]
          logger.debug("inputs: %s", inputs)
          return inputs
  
      def build_model(self, inputs):
keep keep keep keep replace keep keep keep keep keep
 Update code to support Tensorflow versions up to 2.8 (#1213)

* Update maximum tf version in setup + requirements

* - bump max version of tf version in launcher
- standardise tf version check

* update keras get_custom_objects  for tf>2.6

* bugfix: force black text in GUI file dialogs (linux)

* dssim loss - Move to stock tf.ssim function

* Update optimizer imports for compatibility

* fix logging for tf2.8

* Fix GUI graphing for TF2.8

* update tests

* bump requirements.txt versions

* Remove limit on nvidia-ml-py

* Graphing bugfixes
  - Prevent live graph from displaying if data not yet available

* bugfix: Live graph. Collect loss labels correctly

* fix: live graph - swallow inconsistent loss errors

* Bugfix: Prevent live graph from clearing during training

* Fix graphing for AMD 
plugins/train/model/_base.py