  # Exclude badly numbered Python2 version of nvidia-ml-py
  #nvidia-ml-py>=11.510,<300
  # Pin nvidida-ml-py to <11.515 until we know if bytes->str is an error or permanent change
  nvidia-ml-py<11.515
  typing-extensions
  pywin32>=228 ; sys_platform == "win32"
 
</s> remove         if clipnorm and (arguments.distributed or mixed_precision):
            logger.warning("Clipnorm has been selected, but is unsupported when using distributed "
                           "or mixed_precision training, so has been disabled. If you wish to "
                           "enable clipnorm, then you must disable these other options.")
            clipnorm = False
        if clipnorm and get_backend() == "amd":
            # TODO add clipnorm in for plaidML when it is fixed upstream. Still not fixed in
            # release 0.7.0.
            logger.warning("Due to a bug in plaidML, clipnorm cannot be used on AMD backends so "
                           "has been disabled")
            clipnorm = False
        if clipnorm:
            self._kwargs["clipnorm"] = 1.0
 </s> add         if not autoclip:
            return </s> remove _DEFAULTS = {
    "input_size": {
        "default": 128,
        "info": "Resolution (in pixels) of the image to train on.\n"
                "BE AWARE Larger resolution will dramatically increaseVRAM requirements.\n"
                "Make sure your resolution is divisible by 64 (e.g. 64, 128, 256 etc.).\n"
                "NB: Your faceset must be at least 1.6x larger than your required input "
                "size.\n(e.g. 160 is the maximum input size for a 256x256 faceset).",
        "datatype": int,
        "rounding": 64,
        "min_max": (64, 512),
        "choices": [],
        "gui_radio": False,
        "group": "size",
        "fixed": True,
    },
    "lowmem": {
        "default": False,
        "info": "Lower memory mode. Set to 'True' if having issues with VRAM useage.\n"
                "NB: Models with a changed lowmem mode are not compatible with each other.\n"
                "NB: lowmem will override cutom nodes and complexity settings.",
        "datatype": bool,
        "rounding": None,
        "min_max": None,
        "choices": [],
        "gui_radio": False,
        "group": "settings",
        "fixed": True,
    },
    "clipnorm": {
        "default": True,
        "info": "Controls gradient clipping of the optimizer. Can prevent model corruption at "
                "the expense of VRAM.",
        "datatype": bool,
        "rounding": None,
        "min_max": None,
        "choices": [],
        "gui_radio": False,
        "group": "settings",
        "fixed": True,
    },
    "nodes": {
        "default": 1024,
        "info": "Number of nodes for decoder. Don't change this unless you know what you are "
                "doing!",
        "datatype": int,
        "rounding": 64,
        "min_max": (512, 4096),
        "choices": [],
        "gui_radio": False,
        "fixed": True,
        "group": "network",
    },
    "complexity_encoder": {
        "default": 128,
        "info": "Encoder Convolution Layer Complexity. sensible ranges: 128 to 160.",
        "datatype": int,
        "rounding": 16,
        "min_max": (64, 1024),
        "choices": [],
        "gui_radio": False,
        "fixed": True,
        "group": "network",
    },
    "complexity_decoder_a": {
        "default": 384,
        "info": "Decoder A Complexity.",
        "datatype": int,
        "rounding": 16,
        "min_max": (64, 1024),
        "choices": [],
        "gui_radio": False,
        "fixed": True,
        "group": "network",
    },
    "complexity_decoder_b": {
        "default": 512,
        "info": "Decoder B Complexity.",
        "datatype": int,
        "rounding": 16,
        "min_max": (64, 1024),
        "choices": [],
        "gui_radio": False,
        "fixed": True,
        "group": "network",
    },
}
 </s> add _DEFAULTS = dict(
    input_size=dict(
        default=128,
        info="Resolution (in pixels) of the image to train on.\n"
             "BE AWARE Larger resolution will dramatically increaseVRAM requirements.\n"
             "Make sure your resolution is divisible by 64 (e.g. 64, 128, 256 etc.).\n"
             "NB: Your faceset must be at least 1.6x larger than your required input "
             "size.\n(e.g. 160 is the maximum input size for a 256x256 faceset).",
        datatype=int,
        rounding=64,
        min_max=(64, 512),
        choices=[],
        gui_radio=False,
        group="size",
        fixed=True),
    lowmem=dict(
        default=False,
        info="Lower memory mode. Set to 'True' if having issues with VRAM useage.\n"
             "NB: Models with a changed lowmem mode are not compatible with each other.\n"
             "NB: lowmem will override cutom nodes and complexity settings.",
        datatype=bool,
        rounding=None,
        min_max=None,
        choices=[],
        gui_radio=False,
        group="settings",
        fixed=True),
    nodes=dict(
        default=1024,
        info="Number of nodes for decoder. Don't change this unless you know what you are doing!",
        datatype=int,
        rounding=64,
        min_max=(512, 4096),
        choices=[],
        gui_radio=False,
        fixed=True,
        group="network"),
    complexity_encoder=dict(
        default=128,
        info="Encoder Convolution Layer Complexity. sensible ranges: 128 to 160.",
        datatype=int,
        rounding=16,
        min_max=(64, 1024),
        choices=[],
        gui_radio=False,
        fixed=True,
        group="network"),
    complexity_decoder_a=dict(
        default=384,
        info="Decoder A Complexity.",
        datatype=int,
        rounding=16,
        min_max=(64, 1024),
        choices=[],
        gui_radio=False,
        fixed=True,
        group="network"),
    complexity_decoder_b=dict(
        default=512,
        info="Decoder B Complexity.",
        datatype=int,
        rounding=16,
        min_max=(64, 1024),
        choices=[],
        gui_radio=False,
        fixed=True,
        group="network")) </s> remove     mixed_precision: bool
        ``True`` if mixed precision training is to be enabled otherwise ``False``
    arguments: :class:`argparse.Namespace`
        The arguments that were passed to the train or convert process as generated from
        Faceswap's command line arguments
 </s> add 
tensorflow_probability<0.17
  # Exclude badly numbered Python2 version of nvidia-ml-py
  #nvidia-ml-py>=11.510,<300
  # Pin nvidida-ml-py to <11.515 until we know if bytes->str is an error or permanent change
  nvidia-ml-py<11.515
tensorflow_probability<0.17
  typing-extensions
  pywin32>=228 ; sys_platform == "win32"
keep keep keep add keep keep
 Nvidia: Add AutoClip training option 
requirements/_requirements_base.txt