          self._loss_functions.append(compile_utils.LossesContainer(function))
          self._loss_weights.append(weight)
          self._mask_channels.append(mask_channel)
  
      def __call__(self, y_true: tf.Tensor, y_pred: tf.Tensor) -> tf.Tensor:
          """ Call the sub loss functions for the loss wrapper.
  
          Loss is 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
 
</s> remove         self._io.save()  # pylint:disable=protected-access
 </s> add         self._io.save(is_exit=is_exit) </s> remove     def save(self) -> None:
 </s> add     def save(self, is_exit: bool = False) -> None:
    def call(self, y_true: tf.Tensor, y_pred: tf.Tensor) -> tf.Tensor:
          self._loss_functions.append(compile_utils.LossesContainer(function))
          self._loss_weights.append(weight)
          self._mask_channels.append(mask_channel)
  
    def call(self, y_true: tf.Tensor, y_pred: tf.Tensor) -> tf.Tensor:
          """ Call the sub loss functions for the loss wrapper.
  
          Loss is 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
keep keep keep keep replace keep keep keep keep keep
 Training: Add setting option to save optimizer weights 
lib/model/loss/loss_tf.py