11from __future__ import absolute_import , division , print_function , unicode_literals
22
3- import tensorflow as tf
4- import numpy as np
3+ import logging
54import unittest
5+
66import keras
77import keras .backend as k
8- from keras . models import Sequential
9- from keras . layers import Dense , Flatten , Conv2D , MaxPooling2D
8+ import numpy as np
9+ import tensorflow as tf
1010import torch .nn as nn
1111import torch .optim as optim
12+ from keras .layers import Dense , Flatten , Conv2D , MaxPooling2D
13+ from keras .models import Sequential
1214
13- from art .attacks .carlini import CarliniL2Method
14- from art .classifiers .tensorflow import TFClassifier
15- from art .classifiers .keras import KerasClassifier
16- from art .classifiers .pytorch import PyTorchClassifier
15+ from art .attacks import CarliniL2Method
16+ from art .classifiers import KerasClassifier , PyTorchClassifier , TFClassifier
1717from art .utils import load_mnist , random_targets
1818
19+ logger = logging .getLogger ('testLogger' )
20+
1921BATCH_SIZE , NB_TRAIN , NB_TEST = 100 , 5000 , 10
2022
2123
@@ -84,7 +86,7 @@ def test_failure_attack(self):
8486
8587 # Failure attack
8688 cl2m = CarliniL2Method (classifier = tfc , targeted = True , max_iter = 0 , binary_search_steps = 0 ,
87- learning_rate = 0 , initial_const = 1 , decay = 0 )
89+ learning_rate = 0 , initial_const = 1 )
8890 params = {'y' : random_targets (y_test , tfc .nb_classes )}
8991 x_test_adv = cl2m .generate (x_test , ** params )
9092 self .assertTrue ((x_test_adv <= 1.0001 ).all ())
@@ -126,48 +128,44 @@ def test_tfclassifier(self):
126128 tfc .fit (x_train , y_train , batch_size = BATCH_SIZE , nb_epochs = 10 )
127129
128130 # First attack
129- cl2m = CarliniL2Method (classifier = tfc , targeted = True , max_iter = 100 , binary_search_steps = 1 ,
130- learning_rate = 1 , initial_const = 10 , decay = 0 )
131+ cl2m = CarliniL2Method (classifier = tfc , targeted = True , max_iter = 10 )
131132 params = {'y' : random_targets (y_test , tfc .nb_classes )}
132133 x_test_adv = cl2m .generate (x_test , ** params )
133134 self .assertFalse ((x_test == x_test_adv ).all ())
134135 self .assertTrue ((x_test_adv <= 1.0001 ).all ())
135136 self .assertTrue ((x_test_adv >= - 0.0001 ).all ())
136137 target = np .argmax (params ['y' ], axis = 1 )
137138 y_pred_adv = np .argmax (tfc .predict (x_test_adv ), axis = 1 )
138- print ( " CW2 Target: %s" % target )
139- print ( " CW2 Actual: %s" % y_pred_adv )
140- print ( " CW2 Success Rate: %f" % (sum (target == y_pred_adv )/ float (len (target ))))
139+ logger . debug ( ' CW2 Target: %s' , target )
140+ logger . debug ( ' CW2 Actual: %s' , y_pred_adv )
141+ logger . info ( ' CW2 Success Rate: %.2f' , (sum (target == y_pred_adv ) / float (len (target ))))
141142 self .assertTrue ((target == y_pred_adv ).any ())
142143
143144 # Second attack
144- cl2m = CarliniL2Method (classifier = tfc , targeted = False , max_iter = 100 , binary_search_steps = 1 ,
145- learning_rate = 1 , initial_const = 10 , decay = 0 )
145+ cl2m = CarliniL2Method (classifier = tfc , targeted = False , max_iter = 10 )
146146 params = {'y' : random_targets (y_test , tfc .nb_classes )}
147147 x_test_adv = cl2m .generate (x_test , ** params )
148- self .assertFalse ((x_test == x_test_adv ).all ())
149148 self .assertTrue ((x_test_adv <= 1.0001 ).all ())
150149 self .assertTrue ((x_test_adv >= - 0.0001 ).all ())
151150 target = np .argmax (params ['y' ], axis = 1 )
152151 y_pred_adv = np .argmax (tfc .predict (x_test_adv ), axis = 1 )
153- print ( " CW2 Target: %s" % target )
154- print ( " CW2 Actual: %s" % y_pred_adv )
155- print ( " CW2 Success Rate: %f" % (sum (target != y_pred_adv )/ float (len (target ))))
152+ logger . debug ( ' CW2 Target: %s' , target )
153+ logger . debug ( ' CW2 Actual: %s' , y_pred_adv )
154+ logger . info ( ' CW2 Success Rate: %.2f' , (sum (target == y_pred_adv ) / float (len (target ))))
156155 self .assertTrue ((target != y_pred_adv ).any ())
157156
158157 # Third attack
159- cl2m = CarliniL2Method (classifier = tfc , targeted = False , max_iter = 100 , binary_search_steps = 1 ,
160- learning_rate = 1 , initial_const = 10 , decay = 0 )
158+ cl2m = CarliniL2Method (classifier = tfc , targeted = False , max_iter = 10 )
161159 params = {}
162160 x_test_adv = cl2m .generate (x_test , ** params )
163161 self .assertFalse ((x_test == x_test_adv ).all ())
164162 self .assertTrue ((x_test_adv <= 1.0001 ).all ())
165163 self .assertTrue ((x_test_adv >= - 0.0001 ).all ())
166164 y_pred = np .argmax (tfc .predict (x_test ), axis = 1 )
167165 y_pred_adv = np .argmax (tfc .predict (x_test_adv ), axis = 1 )
168- print ( " CW2 Target: %s" % y_pred )
169- print ( " CW2 Actual: %s" % y_pred_adv )
170- print ( " CW2 Success Rate: %f" % (sum (y_pred != y_pred_adv )/ float (len (y_pred ))))
166+ logger . debug ( ' CW2 Target: %s' , y_pred )
167+ logger . debug ( ' CW2 Actual: %s' , y_pred_adv )
168+ logger . info ( ' CW2 Success Rate: %.2f' , (sum (y_pred != y_pred_adv ) / float (len (y_pred ))))
171169 self .assertTrue ((y_pred != y_pred_adv ).any ())
172170
173171 def test_krclassifier (self ):
@@ -197,48 +195,44 @@ def test_krclassifier(self):
197195 krc .fit (x_train , y_train , batch_size = BATCH_SIZE , nb_epochs = 10 )
198196
199197 # First attack
200- cl2m = CarliniL2Method (classifier = krc , targeted = True , max_iter = 100 , binary_search_steps = 1 ,
201- learning_rate = 1 , initial_const = 10 , decay = 0 )
198+ cl2m = CarliniL2Method (classifier = krc , targeted = True , max_iter = 10 )
202199 params = {'y' : random_targets (y_test , krc .nb_classes )}
203200 x_test_adv = cl2m .generate (x_test , ** params )
204201 self .assertFalse ((x_test == x_test_adv ).all ())
205202 self .assertTrue ((x_test_adv <= 1.0001 ).all ())
206203 self .assertTrue ((x_test_adv >= - 0.0001 ).all ())
207204 target = np .argmax (params ['y' ], axis = 1 )
208205 y_pred_adv = np .argmax (krc .predict (x_test_adv ), axis = 1 )
209- print ( " CW2 Target: %s" % target )
210- print ( " CW2 Actual: %s" % y_pred_adv )
211- print ( " CW2 Success Rate: %f" % (sum (target == y_pred_adv )/ float (len (target ))))
206+ logger . debug ( ' CW2 Target: %s' , target )
207+ logger . debug ( ' CW2 Actual: %s' , y_pred_adv )
208+ logger . info ( ' CW2 Success Rate: %.2f' , (sum (target == y_pred_adv ) / float (len (target ))))
212209 self .assertTrue ((target == y_pred_adv ).any ())
213210
214211 # Second attack
215- cl2m = CarliniL2Method (classifier = krc , targeted = False , max_iter = 100 , binary_search_steps = 1 ,
216- learning_rate = 1 , initial_const = 10 , decay = 0 )
212+ cl2m = CarliniL2Method (classifier = krc , targeted = False , max_iter = 10 )
217213 params = {'y' : random_targets (y_test , krc .nb_classes )}
218214 x_test_adv = cl2m .generate (x_test , ** params )
219- self .assertFalse ((x_test == x_test_adv ).all ())
220215 self .assertTrue ((x_test_adv <= 1.0001 ).all ())
221216 self .assertTrue ((x_test_adv >= - 0.0001 ).all ())
222217 target = np .argmax (params ['y' ], axis = 1 )
223218 y_pred_adv = np .argmax (krc .predict (x_test_adv ), axis = 1 )
224- print ( " CW2 Target: %s" % target )
225- print ( " CW2 Actual: %s" % y_pred_adv )
226- print ( " CW2 Success Rate: %f" % (sum (target != y_pred_adv )/ float (len (target ))))
219+ logger . debug ( ' CW2 Target: %s' , target )
220+ logger . debug ( ' CW2 Actual: %s' , y_pred_adv )
221+ logger . info ( ' CW2 Success Rate: %.2f' , (sum (target != y_pred_adv ) / float (len (target ))))
227222 self .assertTrue ((target != y_pred_adv ).any ())
228223
229224 # Third attack
230- cl2m = CarliniL2Method (classifier = krc , targeted = False , max_iter = 100 , binary_search_steps = 1 ,
231- learning_rate = 1 , initial_const = 10 , decay = 0 )
225+ cl2m = CarliniL2Method (classifier = krc , targeted = False , max_iter = 10 )
232226 params = {}
233227 x_test_adv = cl2m .generate (x_test , ** params )
234228 self .assertFalse ((x_test == x_test_adv ).all ())
235229 self .assertTrue ((x_test_adv <= 1.0001 ).all ())
236230 self .assertTrue ((x_test_adv >= - 0.0001 ).all ())
237231 y_pred = np .argmax (krc .predict (x_test ), axis = 1 )
238232 y_pred_adv = np .argmax (krc .predict (x_test_adv ), axis = 1 )
239- print ( " CW2 Target: %s" % y_pred )
240- print ( " CW2 Actual: %s" % y_pred_adv )
241- print ( " CW2 Success Rate: %f" % (sum (y_pred != y_pred_adv )/ float (len (y_pred ))))
233+ logger . debug ( ' CW2 Target: %s' , y_pred )
234+ logger . debug ( ' CW2 Actual: %s' , y_pred_adv )
235+ logger . info ( ' CW2 Success Rate: %.2f' , (sum (y_pred != y_pred_adv ) / float (len (y_pred ))))
242236 self .assertTrue ((y_pred != y_pred_adv ).any ())
243237
244238 def test_ptclassifier (self ):
@@ -263,8 +257,7 @@ def test_ptclassifier(self):
263257 ptc .fit (x_train , y_train , batch_size = BATCH_SIZE , nb_epochs = 10 )
264258
265259 # First attack
266- cl2m = CarliniL2Method (classifier = ptc , targeted = True , max_iter = 100 , binary_search_steps = 1 ,
267- learning_rate = 1 , initial_const = 10 , decay = 0 )
260+ cl2m = CarliniL2Method (classifier = ptc , targeted = True , max_iter = 10 )
268261 params = {'y' : random_targets (y_test , ptc .nb_classes )}
269262 x_test_adv = cl2m .generate (x_test , ** params )
270263 self .assertFalse ((x_test == x_test_adv ).all ())
@@ -275,20 +268,17 @@ def test_ptclassifier(self):
275268 self .assertTrue ((target == y_pred_adv ).any ())
276269
277270 # Second attack
278- cl2m = CarliniL2Method (classifier = ptc , targeted = False , max_iter = 100 , binary_search_steps = 1 ,
279- learning_rate = 1 , initial_const = 10 , decay = 0 )
271+ cl2m = CarliniL2Method (classifier = ptc , targeted = False , max_iter = 10 )
280272 params = {'y' : random_targets (y_test , ptc .nb_classes )}
281273 x_test_adv = cl2m .generate (x_test , ** params )
282- self .assertFalse ((x_test == x_test_adv ).all ())
283274 self .assertTrue ((x_test_adv <= 1.0001 ).all ())
284275 self .assertTrue ((x_test_adv >= - 0.0001 ).all ())
285276 target = np .argmax (params ['y' ], axis = 1 )
286277 y_pred_adv = np .argmax (ptc .predict (x_test_adv ), axis = 1 )
287278 self .assertTrue ((target != y_pred_adv ).any ())
288279
289280 # Third attack
290- cl2m = CarliniL2Method (classifier = ptc , targeted = False , max_iter = 100 , binary_search_steps = 1 ,
291- learning_rate = 1 , initial_const = 10 , decay = 0 )
281+ cl2m = CarliniL2Method (classifier = ptc , targeted = False , max_iter = 10 )
292282 params = {}
293283 x_test_adv = cl2m .generate (x_test , ** params )
294284 self .assertFalse ((x_test == x_test_adv ).all ())
0 commit comments