From 9ca0d74e5a8fe109fc89d977aaa50f35670036fb Mon Sep 17 00:00:00 2001 From: Arunabh Date: Thu, 29 Jun 2023 21:43:12 +0200 Subject: [PATCH 1/7] Update import statement for PyTorchClassifier Signed-off-by: Arunabh --- examples/adversarial_training_FBF.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/adversarial_training_FBF.py b/examples/adversarial_training_FBF.py index 207781e849..6afdc578bd 100644 --- a/examples/adversarial_training_FBF.py +++ b/examples/adversarial_training_FBF.py @@ -11,7 +11,7 @@ import torchvision.transforms as transforms from torch.utils.data import Dataset, DataLoader -from art.classifiers import PyTorchClassifier +from art.estimators.classification import PyTorchClassifier from art.data_generators import PyTorchDataGenerator from art.defences.trainer import AdversarialTrainerFBFPyTorch from art.utils import load_cifar10 From e1d67e1f8f19bdc0542a610064802d57a4ea66aa Mon Sep 17 00:00:00 2001 From: Arunabh Date: Thu, 29 Jun 2023 21:44:04 +0200 Subject: [PATCH 2/7] disable eager execution Signed-off-by: Arunabh --- examples/adversarial_training_data_augmentation.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/examples/adversarial_training_data_augmentation.py b/examples/adversarial_training_data_augmentation.py index d85062e30e..622e6b428f 100644 --- a/examples/adversarial_training_data_augmentation.py +++ b/examples/adversarial_training_data_augmentation.py @@ -1,6 +1,10 @@ """ This is an example of how to use ART and Keras to perform adversarial training using data generators for CIFAR10 """ +import tensorflow as tf + +tf.compat.v1.disable_eager_execution() + import keras import numpy as np from keras.layers import Conv2D, Dense, Flatten, MaxPooling2D, Input, BatchNormalization From 7130ca8c840ec86bf248f06599535e7203860e1f Mon Sep 17 00:00:00 2001 From: Arunabh Date: Thu, 29 Jun 2023 21:44:53 +0200 Subject: [PATCH 3/7] set force_row_wise=true in params to remove the overhead Signed-off-by: Arunabh --- examples/get_started_lightgbm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/get_started_lightgbm.py b/examples/get_started_lightgbm.py index 507d98a1a0..3c5a9612c3 100644 --- a/examples/get_started_lightgbm.py +++ b/examples/get_started_lightgbm.py @@ -27,7 +27,7 @@ # Step 2: Create the model -params = {"objective": "multiclass", "metric": "multi_logloss", "num_class": 10} +params = {"objective": "multiclass", "metric": "multi_logloss", "num_class": 10, "force_col_wise": True} train_set = lgb.Dataset(x_train, label=np.argmax(y_train, axis=1)) test_set = lgb.Dataset(x_test, label=np.argmax(y_test, axis=1)) model = lgb.train(params=params, train_set=train_set, num_boost_round=100, valid_sets=[test_set]) From 8df321db77f70a97cbb23aa3a591b5a378f14a28 Mon Sep 17 00:00:00 2001 From: Arunabh Date: Thu, 29 Jun 2023 21:45:45 +0200 Subject: [PATCH 4/7] fix XGBoost eval_metric parameter Signed-off-by: Arunabh --- examples/get_started_xgboost.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/get_started_xgboost.py b/examples/get_started_xgboost.py index f6930eb24d..4409487618 100644 --- a/examples/get_started_xgboost.py +++ b/examples/get_started_xgboost.py @@ -27,7 +27,7 @@ # Step 2: Create the model -params = {"objective": "multi:softprob", "metric": "accuracy", "num_class": 10} +params = {"objective": "multi:softprob", "eval_metric": ["mlogloss", "merror"], "num_class": 10} dtrain = xgb.DMatrix(x_train, label=np.argmax(y_train, axis=1)) dtest = xgb.DMatrix(x_test, label=np.argmax(y_test, axis=1)) evals = [(dtest, "test"), (dtrain, "train")] From b816b6339573a2b9233b8486b7629697a692821a Mon Sep 17 00:00:00 2001 From: Arunabh Date: Thu, 29 Jun 2023 21:46:50 +0200 Subject: [PATCH 5/7] disable eager execution and demonstrate FGSM over multiple episilon values Signed-off-by: Arunabh --- examples/mnist_cnn_fgsm.py | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/examples/mnist_cnn_fgsm.py b/examples/mnist_cnn_fgsm.py index e3ba4f7b46..638284a01a 100644 --- a/examples/mnist_cnn_fgsm.py +++ b/examples/mnist_cnn_fgsm.py @@ -2,6 +2,10 @@ """Trains a convolutional neural network on the MNIST dataset, then attacks it with the FGSM attack.""" from __future__ import absolute_import, division, print_function, unicode_literals +import tensorflow as tf + +tf.compat.v1.disable_eager_execution() + from keras.models import Sequential from keras.layers import Dense, Flatten, Conv2D, MaxPooling2D, Dropout import numpy as np @@ -35,12 +39,16 @@ acc = np.sum(preds == np.argmax(y_test, axis=1)) / y_test.shape[0] print("\nTest accuracy: %.2f%%" % (acc * 100)) -# Craft adversarial samples with FGSM -epsilon = 0.1 # Maximum perturbation -adv_crafter = FastGradientMethod(classifier, eps=epsilon) -x_test_adv = adv_crafter.generate(x=x_test) +# Define epsilon values +epsilon_values = [0.01, 0.1, 0.15, 0.2, 0.25, 0.3] -# Evaluate the classifier on the adversarial examples -preds = np.argmax(classifier.predict(x_test_adv), axis=1) -acc = np.sum(preds == np.argmax(y_test, axis=1)) / y_test.shape[0] -print("\nTest accuracy on adversarial sample: %.2f%%" % (acc * 100)) +# Iterate over epsilon values +for epsilon in epsilon_values: + # Craft adversarial samples with FGSM + adv_crafter = FastGradientMethod(classifier, eps=epsilon) + x_test_adv = adv_crafter.generate(x=x_test, y=y_test) + + # Evaluate the classifier on the adversarial examples + preds = np.argmax(classifier.predict(x_test_adv), axis=1) + acc = np.sum(preds == np.argmax(y_test, axis=1)) / y_test.shape[0] + print("Test accuracy on adversarial sample (epsilon = %.2f): %.2f%%" % (epsilon, acc * 100)) From da8d9d9a807a2012e59bbf4341690668f9abbbaf Mon Sep 17 00:00:00 2001 From: Arunabh Date: Thu, 29 Jun 2023 21:47:42 +0200 Subject: [PATCH 6/7] disable eager execution Signed-off-by: Arunabh --- examples/mnist_poison_detection.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/mnist_poison_detection.py b/examples/mnist_poison_detection.py index 3cef7bc57b..9a6f75a44b 100644 --- a/examples/mnist_poison_detection.py +++ b/examples/mnist_poison_detection.py @@ -5,7 +5,9 @@ import pprint import json +import tensorflow as tf +tf.compat.v1.disable_eager_execution() from keras.models import Sequential from keras.layers import Dense, Flatten, Conv2D, MaxPooling2D, Dropout import numpy as np From a52581aa4183892774ce7299615a1509348aecf2 Mon Sep 17 00:00:00 2001 From: Arunabh Date: Thu, 29 Jun 2023 21:48:12 +0200 Subject: [PATCH 7/7] disable eager execution Signed-off-by: Arunabh --- examples/mnist_transferability.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/examples/mnist_transferability.py b/examples/mnist_transferability.py index 76b75a7135..bcd88a19dd 100644 --- a/examples/mnist_transferability.py +++ b/examples/mnist_transferability.py @@ -12,6 +12,8 @@ import numpy as np import tensorflow as tf +tf.compat.v1.disable_eager_execution() + from art.attacks.evasion import DeepFool from art.estimators.classification import KerasClassifier, TensorFlowClassifier from art.utils import load_mnist @@ -60,7 +62,7 @@ def cnn_mnist_k(input_shape): # Get session -session = tf.Session() +session = tf.compat.v1.Session() k.set_session(session) # Read MNIST dataset