def test_attack(bn_adversarial): set_seeds(22) adv = bn_adversarial attack = Attack() attack(adv, d=1, t=10) assert adv.perturbed is not None assert adv.distance.value < np.inf
def test_targeted_attack(bn_targeted_adversarial): set_seeds(22) adv = bn_targeted_adversarial attack = Attack() attack(adv, d=1) assert adv.perturbed is None assert adv.distance.value == np.inf
def test_attack_startingpoint(bn_adversarial): adv = bn_adversarial attack = Attack() o = adv.unperturbed np.random.seed(2) starting_point = np.random.uniform(0, 1, size=o.shape).astype(o.dtype) attack(adv, starting_point=starting_point) assert adv.perturbed is not None assert adv.distance.value < np.inf
def test_subsample(bn_adversarial): adv = bn_adversarial attack = Attack() attack(adv, subsample=5) assert adv.perturbed is not None assert adv.distance.value < np.inf
def test_lambda(bn_adversarial): adv = bn_adversarial attack = Attack() attack(adv, lambda_=1.5) assert adv.perturbed is not None assert adv.distance.value < np.inf
def test_attack_pytorch(bn_adversarial_pytorch): adv = bn_adversarial_pytorch attack = Attack() attack(adv) assert adv.perturbed is not None assert adv.distance.value < np.inf
def test_attack_random_targets(bn_adversarial): adv = bn_adversarial attack = Attack() attack(adv, num_random_targets=2) assert adv.perturbed is not None assert adv.distance.value < np.inf
def test_attack_gl(gl_bn_adversarial): adv = gl_bn_adversarial attack = Attack() attack(adv) assert adv.perturbed is None assert adv.distance.value == np.inf
def test_targeted_attack(bn_targeted_adversarial): adv = bn_targeted_adversarial attack = Attack() attack(adv, max_iterations=100, binary_search_steps=20) assert adv.perturbed is not None assert adv.distance.value < np.inf
def test_attack_eps(bn_adversarial): adv = bn_adversarial attack = Attack() attack(adv, epsilons=np.linspace(0.0, 1.0, 100)[1:]) assert adv.perturbed is not None assert adv.distance.value < np.inf
def test_name(): attack = Attack() assert "Approx" in attack.name()
def test_attack_gl(gl_bn_adversarial): adv = gl_bn_adversarial attack = Attack() attack(adv, maxiter=1, epsilon=1000) assert adv.perturbed is not None assert adv.distance.value < np.inf
def test_targeted_attack_max(bn_targeted_adversarial): adv = bn_targeted_adversarial attack = Attack() attack(adv, max_perturbations_per_pixel=1) assert adv.perturbed is not None assert adv.distance.value < np.inf
def test_targeted_attack_slow(bn_targeted_adversarial): adv = bn_targeted_adversarial attack = Attack() attack(adv, fast=False) assert adv.perturbed is not None assert adv.distance.value < np.inf
def test_step(bn_adversarial): adv = bn_adversarial attack = Attack() attack(adv, steps=1) assert adv.perturbed is not None assert adv.distance.value < np.inf
def test_attack_trivial(bn_trivial): adv = bn_trivial attack = Attack() attack(adv) assert adv.perturbed is not None assert adv.distance.value < np.inf
def test_attack_rnd(bn_adversarial): adv = bn_adversarial attack = Attack() attack(adv, random_sampling=True) assert adv.perturbed is not None assert adv.distance.value < np.inf
def test_attack_eg(eg_bn_adversarial): adv = eg_bn_adversarial attack = Attack() attack(adv) assert adv.perturbed is not None assert adv.distance.value < np.inf
def test_attack_notrans(bn_adversarial): adv = bn_adversarial attack = Attack() attack(adv, do_translations=False) assert adv.perturbed is not None assert adv.distance.value < np.inf
def test_attack_impossible(bn_impossible): adv = bn_impossible attack = Attack() attack(adv) assert adv.perturbed is None assert adv.distance.value == np.inf
def test_attack_notrans_norot(bn_adversarial): adv = bn_adversarial attack = Attack() attack(adv, do_translations=False, do_rotations=False) assert adv.perturbed is None assert adv.distance.value == np.inf
def test_untargeted_attack(bn_adversarial): adv = bn_adversarial attack = Attack() attack(adv) assert adv.perturbed is not None assert adv.distance.value < np.inf
def test_targeted_attack_pytorch(bn_targeted_adversarial_pytorch): adv = bn_targeted_adversarial_pytorch attack = Attack() attack(adv, num_random_targets=2) assert adv.perturbed is not None assert adv.distance.value < np.inf