class AttackTestTarget(NamedTuple): attack: fbn.Attack epsilon: Optional[float] = None uses_grad: Optional[bool] = False requires_real_model: Optional[bool] = False def get_attack_id(x: AttackTestTarget) -> str: return repr(x.attack) # attack, eps / None, attack_uses_grad, requires_real_model attacks: List[AttackTestTarget] = [ AttackTestTarget(fa.DDNAttack(init_epsilon=2.0), uses_grad=True), AttackTestTarget(fa.InversionAttack()), AttackTestTarget( fa.InversionAttack(distance=fbn.distances.l2).repeat(3).repeat(2), ), AttackTestTarget(fa.L2ContrastReductionAttack(), L2(100.0)), AttackTestTarget(fa.L2ContrastReductionAttack().repeat(3), 100.0), AttackTestTarget( fa.BinarySearchContrastReductionAttack(binary_search_steps=15)), AttackTestTarget(fa.LinearSearchContrastReductionAttack(steps=20)), AttackTestTarget(fa.L2CarliniWagnerAttack(binary_search_steps=11, steps=5), uses_grad=True), AttackTestTarget( fa.L2CarliniWagnerAttack(binary_search_steps=3, steps=20, confidence=2.0), uses_grad=True,
import eagerpy as ep import foolbox as fbn import foolbox.attacks as fa L2 = fbn.types.L2 Linf = fbn.types.Linf def get_attack_id(x: Tuple[fbn.Attack, bool, bool]) -> str: return repr(x[0]) # attack, eps / None, attack_uses_grad, requires_real_model attacks: List[Tuple[fbn.Attack, Optional[float], bool, bool]] = [ (fa.DDNAttack(init_epsilon=2.0), None, True, False), (fa.InversionAttack(), None, False, False), ( fa.InversionAttack(distance=fbn.distances.l2).repeat(3).repeat(2), None, False, False, ), (fa.L2ContrastReductionAttack(), L2(100.0), False, False), (fa.L2ContrastReductionAttack().repeat(3), 100.0, False, False), ( fa.BinarySearchContrastReductionAttack(binary_search_steps=15), None, False, False, ),