          loss = K.mean(max_loss, axis=-1)
          return loss
  
  
  class GradientLoss(tf.keras.losses.Loss):
      """ Gradient Loss Function.
  
      Calculates the first and second order gradient difference between pixels of an image in the x
      and y dimensions. These gradients are then compared between the ground truth and the predicted
      image and the difference is taken. When used as a loss, its minimization will result in
 
</s> remove     Difference of Structural Similarity (DSSIM loss function). Clipped between 0 and 0.5
 </s> add     Difference of Structural Similarity (DSSIM loss function). </s> remove class DSSIMObjective(tf.keras.losses.Loss):
 </s> add class DSSIMObjective(tf.keras.losses.Loss):  # pylint:disable=too-few-public-methods </s> remove class LInfNorm(tf.keras.losses.Loss):
 </s> add class LInfNorm(tf.keras.losses.Loss):  # pylint:disable=too-few-public-methods </s> remove class ConvolutionAware(initializers.Initializer):
 </s> add class ConvolutionAware(initializers.Initializer):  # pylint: disable=no-member </s> remove         retval = dict()
 </s> add         retval = {}
class GradientLoss(tf.keras.losses.Loss):  # pylint:disable=too-few-public-methods
          loss = K.mean(max_loss, axis=-1)
          return loss
  
  
class GradientLoss(tf.keras.losses.Loss):  # pylint:disable=too-few-public-methods
      """ Gradient Loss Function.
  
      Calculates the first and second order gradient difference between pixels of an image in the x
      and y dimensions. These gradients are then compared between the ground truth and the predicted
      image and the difference is taken. When used as a loss, its minimization will result in
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 
lib/model/losses_tf.py