Skip to content

Commit 0b69e1c

Browse files
author
Beat Buesser
committed
Update Feature Adversaries tests
Signed-off-by: Beat Buesser <[email protected]>
1 parent 2082451 commit 0b69e1c

File tree

5 files changed

+17
-12
lines changed

5 files changed

+17
-12
lines changed

art/attacks/evasion/feature_adversaries/feature_adversaries_pytorch.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ def _generate_batch(self, x: "torch.Tensor", y: "torch.Tensor") -> "torch.Tensor
116116
import torch # lgtm [py/repeated-import]
117117

118118
def loss_fn(source_orig, source_adv, guide):
119-
representation_loss = torch.tensor([0.0]).to(self.estimator.device)
119+
representation_loss = torch.zeros(size=(source_orig.shape[0],)).to(self.estimator.device)
120120
for layer_i in self.layer:
121121
adv_representation = self.estimator.get_activations(source_adv, layer_i, self.batch_size, True)
122122
guide_representation = self.estimator.get_activations(guide, layer_i, self.batch_size, True)

art/attacks/evasion/feature_adversaries/feature_adversaries_tensorflow.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ def _generate_batch(self, x: "tf.Tensor", y: "tf.Tensor") -> "tf.Tensor":
116116
import tensorflow as tf # lgtm [py/repeated-import]
117117

118118
def loss_fn(source_orig, source_adv, guide):
119-
representation_loss = tf.constant([0.0], shape=(1,), dtype=tf.float32)
119+
representation_loss = tf.zeros(shape=(source_orig.shape[0],), dtype=tf.float32)
120120
for layer_i in self.layer:
121121
adv_representation = self.estimator.get_activations(source_adv, layer_i, self.batch_size, True)
122122
guide_representation = self.estimator.get_activations(guide, layer_i, self.batch_size, True)

tests/attacks/evasion/feature_adversaries.py/test_feature_adversaries_pytorch.py renamed to tests/attacks/evasion/feature_adversaries/test_feature_adversaries_pytorch.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,14 @@ def test_images_pgd(art_warning, fix_get_mnist_subset, image_dl_estimator_for_at
4242
(x_train_mnist, y_train_mnist, x_test_mnist, y_test_mnist) = fix_get_mnist_subset
4343

4444
classifier = image_dl_estimator_for_attack(FeatureAdversariesPyTorch, functional=True)
45+
print("classifier", classifier)
4546

4647
attack = FeatureAdversariesPyTorch(
47-
classifier, delta=1.0, layer=1, batch_size=32, step_size=0.05, max_iter=1, random_start=False
48+
classifier, delta=1.0, layer=1, batch_size=32, step_size=0.05, max_iter=2, random_start=False
4849
)
4950
x_train_mnist_adv = attack.generate(x=x_train_mnist[0:3], y=x_test_mnist[0:3])
5051
assert np.mean(x_train_mnist[0:3]) == pytest.approx(0.13015705, 0.01)
51-
assert np.mean(x_train_mnist_adv) != 0
52+
assert np.mean(np.abs(x_train_mnist_adv - x_train_mnist[0:3])) != 0.0
5253
except ARTTestException as e:
5354
art_warning(e)
5455

@@ -67,14 +68,16 @@ def test_images_unconstrained_adam(art_warning, fix_get_mnist_subset, image_dl_e
6768
)
6869
x_train_mnist_adv = attack.generate(x=x_train_mnist[0:3], y=x_test_mnist[0:3])
6970
assert np.mean(x_train_mnist[0:3]) == pytest.approx(0.13015705, 0.01)
70-
assert np.mean(x_train_mnist_adv) != 0
71+
assert np.mean(np.abs(x_train_mnist_adv - x_train_mnist[0:3])) != 0.0
7172
except ARTTestException as e:
7273
art_warning(e)
7374

7475

75-
@pytest.mark.skip_framework("tensorflow", "keras", "kerastf", "mxnet", "non_dl_frameworks")
76+
@pytest.mark.framework_agnostic
7677
def test_classifier_type_check_fail(art_warning):
7778
try:
78-
backend_test_classifier_type_check_fail(FeatureAdversariesPyTorch, [BaseEstimator, NeuralNetworkMixin])
79+
backend_test_classifier_type_check_fail(
80+
FeatureAdversariesPyTorch, [BaseEstimator, NeuralNetworkMixin], delta=1.0
81+
)
7982
except ARTTestException as e:
8083
art_warning(e)

tests/attacks/evasion/feature_adversaries.py/test_feature_adversaries_tensorflow.py renamed to tests/attacks/evasion/feature_adversaries/test_feature_adversaries_tensorflow.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,11 @@ def test_images_pgd(art_warning, fix_get_mnist_subset, image_dl_estimator_for_at
4444
classifier = image_dl_estimator_for_attack(FeatureAdversariesTensorFlowV2)
4545

4646
attack = FeatureAdversariesTensorFlowV2(
47-
classifier, delta=1.0, layer=1, batch_size=32, step_size=0.05, max_iter=1, random_start=False
47+
classifier, delta=1.0, layer=1, batch_size=32, step_size=0.05, max_iter=2, random_start=False
4848
)
4949
x_train_mnist_adv = attack.generate(x=x_train_mnist[0:3], y=x_test_mnist[0:3])
5050
assert np.mean(x_train_mnist[0:3]) == pytest.approx(0.13015705, 0.01)
51-
assert np.mean(x_train_mnist_adv) != 0
51+
assert np.mean(np.abs(x_train_mnist_adv - x_train_mnist[0:3])) != 0.0
5252
except ARTTestException as e:
5353
art_warning(e)
5454

@@ -67,14 +67,16 @@ def test_images_unconstrained_adam(art_warning, fix_get_mnist_subset, image_dl_e
6767
)
6868
x_train_mnist_adv = attack.generate(x=x_train_mnist[0:3], y=x_test_mnist[0:3])
6969
assert np.mean(x_train_mnist[0:3]) == pytest.approx(0.13015705, 0.01)
70-
assert np.mean(x_train_mnist_adv) != 0
70+
assert np.mean(np.abs(x_train_mnist_adv - x_train_mnist[0:3])) != 0.0
7171
except ARTTestException as e:
7272
art_warning(e)
7373

7474

75-
@pytest.mark.skip_framework("tensorflow1", "keras", "kerastf", "mxnet", "non_dl_frameworks", "pytorch")
75+
@pytest.mark.framework_agnostic
7676
def test_classifier_type_check_fail(art_warning):
7777
try:
78-
backend_test_classifier_type_check_fail(FeatureAdversariesTensorFlowV2, [BaseEstimator, NeuralNetworkMixin])
78+
backend_test_classifier_type_check_fail(
79+
FeatureAdversariesTensorFlowV2, [BaseEstimator, NeuralNetworkMixin], delta=1.0
80+
)
7981
except ARTTestException as e:
8082
art_warning(e)

0 commit comments

Comments
 (0)