67 lines
1.9 KiB
Python
67 lines
1.9 KiB
Python
from federatedscope.core.configs.config import CN
|
|
from federatedscope.register import register_config
|
|
|
|
|
|
def extend_attack_cfg(cfg):
|
|
|
|
# ---------------------------------------------------------------------- #
|
|
# attack
|
|
# ---------------------------------------------------------------------- #
|
|
cfg.attack = CN()
|
|
cfg.attack.attack_method = ''
|
|
# for gan_attack
|
|
cfg.attack.target_label_ind = -1
|
|
cfg.attack.attacker_id = -1
|
|
|
|
# for backdoor attack
|
|
|
|
cfg.attack.edge_path = 'edge_data/'
|
|
cfg.attack.trigger_path = 'trigger/'
|
|
cfg.attack.setting = 'fix'
|
|
cfg.attack.freq = 10
|
|
cfg.attack.insert_round = 100000
|
|
cfg.attack.mean = [0.9637]
|
|
cfg.attack.std = [0.1592]
|
|
cfg.attack.trigger_type = 'edge'
|
|
cfg.attack.label_type = 'dirty'
|
|
# dirty, clean_label, dirty-label attack is all2one attack.
|
|
cfg.attack.edge_num = 100
|
|
cfg.attack.poison_ratio = 0.5
|
|
cfg.attack.scale_poisoning = False
|
|
cfg.attack.scale_para = 1.0
|
|
cfg.attack.pgd_poisoning = False
|
|
cfg.attack.pgd_lr = 0.1
|
|
cfg.attack.pgd_eps = 2
|
|
cfg.attack.self_opt = False
|
|
cfg.attack.self_lr = 0.05
|
|
cfg.attack.self_epoch = 6
|
|
# Note: the mean and std should be the list type.
|
|
|
|
# for reconstruct_opt
|
|
cfg.attack.reconstruct_lr = 0.01
|
|
cfg.attack.reconstruct_optim = 'Adam'
|
|
cfg.attack.info_diff_type = 'l2'
|
|
cfg.attack.max_ite = 400
|
|
cfg.attack.alpha_TV = 0.001
|
|
|
|
# for active PIA attack
|
|
cfg.attack.alpha_prop_loss = 0
|
|
|
|
# for passive PIA attack
|
|
cfg.attack.classifier_PIA = 'randomforest'
|
|
|
|
# for gradient Ascent --- MIA attack
|
|
cfg.attack.inject_round = 0
|
|
cfg.attack.mia_simulate_in_round = 20
|
|
cfg.attack.mia_is_simulate_in = False
|
|
|
|
# --------------- register corresponding check function ----------
|
|
cfg.register_cfg_check_fun(assert_attack_cfg)
|
|
|
|
|
|
def assert_attack_cfg(cfg):
|
|
pass
|
|
|
|
|
|
register_config("attack", extend_attack_cfg)
|