          """ Call the sub loss functions for the loss wrapper.
  
          Weights are returned as the weighted sum of the chosen losses.
  
          If a mask is being applied to the loss, then the appropriate mask is extracted from y_true
          and added as the 4th channel being passed to the penalized loss function.
  
          Parameters
          ----------
          y_true: tensor or variable
              The ground truth value
 
</s> remove         Weights are returned as the weighted sum of the chosen losses.
 </s> add         Loss is returned as the weighted sum of the chosen losses. </s> remove     def call(self, y_true, y_pred):
 </s> add     def __call__(self, y_true: tf.Tensor, y_pred: tf.Tensor) -> tf.Tensor: </s> remove         y_true: tensor or variable
            The ground truth value
        y_pred: tensor or variable
            The predicted value
 </s> add         y_true: :class:`tensorflow.Tensor`
            The ground truth batch of images, with any required masks stacked on the end
        y_pred: :class:`tensorflow.Tensor`
            The batch of model predictions </s> remove         function: :class:`keras.losses.Loss`
 </s> add         function: :class:`tf.keras.losses.Loss` </s> remove     def _apply_mask(cls, y_true, y_pred, mask_channel, mask_prop=1.0):
 </s> add     def _apply_mask(cls,
                    y_true: tf.Tensor,
                    y_pred: tf.Tensor,
                    mask_channel: int,
                    mask_prop: float = 1.0) -> Tuple[tf.Tensor, tf.Tensor]:
        If masks are being applied to the loss function inputs, then they should be included as
        additional channels at the end of :param:`y_true`, so that they can be split off and
        applied to the actual inputs to the selected loss function(s).
          """ Call the sub loss functions for the loss wrapper.
  
          Weights are returned as the weighted sum of the chosen losses.
  
        If masks are being applied to the loss function inputs, then they should be included as
        additional channels at the end of :param:`y_true`, so that they can be split off and
        applied to the actual inputs to the selected loss function(s).
        If masks are being applied to the loss function inputs, then they should be included as
        additional channels at the end of :param:`y_true`, so that they can be split off and
        applied to the actual inputs to the selected loss function(s).
  
          Parameters
          ----------
          y_true: tensor or variable
              The ground truth value
keep keep keep keep replace replace keep keep keep keep keep
 bugfix: distibuted training with dssim 
lib/model/losses_tf.py