defenses¶
- trojanzoo.defenses.add_argument(parser, defense_name=None, defense=None, class_dict={})[source]¶
- Add defense arguments to argument parser.For specific arguments implementation, see
Defense.add_argument()
.- Parameters:
- Returns:
argparse._ArgumentGroup – The argument group.
- trojanzoo.defenses.create(defense_name=None, defense=None, folder_path=None, dataset_name=None, dataset=None, model_name=None, model=None, config=config, class_dict={}, **kwargs)[source]¶
- Create a defense instance.For arguments not included in
kwargs
, use the default values inconfig
.The default value offolder_path
is'{defense_dir}/{dataset.data_type}/{dataset.name}/{model.name}/{defense.name}'
.For defense implementation, seeDefense
.- Parameters:
defense_name (str) – The defense name.
defense (str | Defense) – The defense instance or defense name (as the alias of defense_name).
dataset_name (str) – The dataset name.
dataset (str | trojanzoo.datasets.Dataset) – Dataset instance or dataset name (as the alias of dataset_name).
model_name (str) – The model name.
model (str | Model) – The model instance or model name (as the alias of model_name).
config (Config) – The default parameter config.
class_dict (dict[str, type[Defense]]) – Map from defense name to defense class. Defaults to
{}
.**kwargs – The keyword arguments passed to defense init method.
- Returns:
Defense – The defense instance.
- class trojanzoo.defenses.Defense(attack=None, **kwargs)[source]¶
- An abstract class representing a defense.It inherits
trojanzoo.utils.module.ModelProcess
.Note
This is the implementation of defense. For users, please use
create()
instead, which is more user-friendly.- Variables:
attack (trojanzoo.attacks.Attack | None) – The attack instance.
- classmethod add_argument(group)[source]¶
Add defense arguments to argument parser group. View source to see specific arguments.
Note
This is the implementation of adding arguments. The concrete defense class may override this method to add more arguments. For users, please use
add_argument()
instead, which is more user-friendly.