      arguments: :class:`argparse.Namespace`
          The arguments that were passed to the train or convert process as generated from
          Faceswap's command line arguments
      """
      def __init__(self, optimizer, learning_rate, clipnorm, arguments):
          logger.debug("Initializing %s: (optimizer: %s, learning_rate: %s, clipnorm: %s, "
                       "arguments: %s", self.__class__.__name__, optimizer, learning_rate, clipnorm,
                       arguments)
          optimizers = {"adam": Adam, "nadam": Nadam, "rms-prop": RMSprop}
          self._optimizer = optimizers[optimizer]
 
</s> remove                      "arguments: %s", self.__class__.__name__, optimizer, learning_rate, clipnorm,
                     arguments)
 </s> add                      "epsilon: %s, arguments: %s)", self.__class__.__name__,
                     optimizer, learning_rate, clipnorm, epsilon, arguments) </s> remove         base_kwargs = {"adam": dict(beta_1=0.5, beta_2=0.99),
                       "nadam": dict(beta_1=0.5, beta_2=0.99),
                       "rms-prop": dict()}
 </s> add         base_kwargs = {"adam": dict(beta_1=0.5, beta_2=0.99, epsilon=epsilon),
                       "nadam": dict(beta_1=0.5, beta_2=0.99, epsilon=epsilon),
                       "rms-prop": dict(epsilon=epsilon)} </s> remove             print_fn = lambda x: logger.verbose("%s", x)  # print to logger
 </s> add             # print to logger
            print_fn = lambda x: logger.verbose("%s", x)  # noqa
    def __init__(self, optimizer, learning_rate, clipnorm, epsilon, arguments):
      arguments: :class:`argparse.Namespace`
          The arguments that were passed to the train or convert process as generated from
          Faceswap's command line arguments
      """
    def __init__(self, optimizer, learning_rate, clipnorm, epsilon, arguments):
          logger.debug("Initializing %s: (optimizer: %s, learning_rate: %s, clipnorm: %s, "
                       "arguments: %s", self.__class__.__name__, optimizer, learning_rate, clipnorm,
                       arguments)
          optimizers = {"adam": Adam, "nadam": Nadam, "rms-prop": RMSprop}
          self._optimizer = optimizers[optimizer]
keep keep keep keep replace keep keep keep keep keep
 Training updates:
  - Expose optimizer epsilon param
  - Add NaN protection
GUI - slider - add support for discreet values 
plugins/train/model/_base.py