@@ -375,161 +375,161 @@ def test_8_keras_mnist(self):
375375 # Clean-up session
376376 k .clear_session ()
377377
378- def test_4_pytorch_classifier (self ):
379- """
380- Third test with the PyTorchClassifier.
381- :return:
382- """
383- x_test = np .swapaxes (self .x_test_mnist , 1 , 3 ).astype (np .float32 )
384- x_test_original = x_test .copy ()
385-
386- # Build PyTorchClassifier
387- ptc = get_image_classifier_pt ()
388-
389- # First targeted attack and norm=2
390- hsj = HopSkipJump (classifier = ptc , targeted = True , max_iter = 20 , max_eval = 100 , init_eval = 10 )
391- params = {"y" : random_targets (self .y_test_mnist , ptc .nb_classes )}
392- x_test_adv = hsj .generate (x_test , ** params )
393-
394- self .assertFalse ((x_test == x_test_adv ).all ())
395- self .assertTrue ((x_test_adv <= 1.0001 ).all ())
396- self .assertTrue ((x_test_adv >= - 0.0001 ).all ())
397-
398- target = np .argmax (params ["y" ], axis = 1 )
399- y_pred_adv = np .argmax (ptc .predict (x_test_adv ), axis = 1 )
400- self .assertTrue ((target == y_pred_adv ).any ())
401-
402- # Test the masking 1
403- mask = np .random .binomial (n = 1 , p = 0.5 , size = np .prod (x_test .shape ))
404- mask = mask .reshape (x_test .shape )
405-
406- params .update (mask = mask )
407- x_test_adv = hsj .generate (x_test , ** params )
408- mask_diff = (1 - mask ) * (x_test_adv - x_test )
409- self .assertAlmostEqual (float (np .max (np .abs (mask_diff ))), 0.0 , delta = 0.00001 )
410-
411- unmask_diff = mask * (x_test_adv - x_test )
412- self .assertGreater (float (np .sum (np .abs (unmask_diff ))), 0.0 )
413-
414- # Test the masking 2
415- mask = np .random .binomial (n = 1 , p = 0.5 , size = np .prod (x_test .shape [1 :]))
416- mask = mask .reshape (x_test .shape [1 :])
417-
418- params .update (mask = mask )
419- x_test_adv = hsj .generate (x_test , ** params )
420- mask_diff = (1 - mask ) * (x_test_adv - x_test )
421- self .assertAlmostEqual (float (np .max (np .abs (mask_diff ))), 0.0 , delta = 0.00001 )
422-
423- unmask_diff = mask * (x_test_adv - x_test )
424- self .assertGreater (float (np .sum (np .abs (unmask_diff ))), 0.0 )
425-
426- # First targeted attack and norm=np.inf
427- hsj = HopSkipJump (classifier = ptc , targeted = True , max_iter = 5 , max_eval = 100 , init_eval = 10 , norm = np .Inf )
428- params = {"y" : random_targets (self .y_test_mnist , ptc .nb_classes )}
429- x_test_adv = hsj .generate (x_test , ** params )
430-
431- self .assertFalse ((x_test == x_test_adv ).all ())
432- self .assertTrue ((x_test_adv <= 1.0001 ).all ())
433- self .assertTrue ((x_test_adv >= - 0.0001 ).all ())
434-
435- target = np .argmax (params ["y" ], axis = 1 )
436- y_pred_adv = np .argmax (ptc .predict (x_test_adv ), axis = 1 )
437- self .assertTrue ((target == y_pred_adv ).any ())
438-
439- # Test the masking 1
440- mask = np .random .binomial (n = 1 , p = 0.5 , size = np .prod (x_test .shape ))
441- mask = mask .reshape (x_test .shape )
442-
443- params .update (mask = mask )
444- x_test_adv = hsj .generate (x_test , ** params )
445- mask_diff = (1 - mask ) * (x_test_adv - x_test )
446- self .assertAlmostEqual (float (np .max (np .abs (mask_diff ))), 0.0 , delta = 0.00001 )
447-
448- unmask_diff = mask * (x_test_adv - x_test )
449- self .assertGreater (float (np .sum (np .abs (unmask_diff ))), 0.0 )
450-
451- # Test the masking 2
452- mask = np .random .binomial (n = 1 , p = 0.5 , size = np .prod (x_test .shape [1 :]))
453- mask = mask .reshape (x_test .shape [1 :])
454-
455- params .update (mask = mask )
456- x_test_adv = hsj .generate (x_test , ** params )
457- mask_diff = (1 - mask ) * (x_test_adv - x_test )
458- self .assertAlmostEqual (float (np .max (np .abs (mask_diff ))), 0.0 , delta = 0.00001 )
459-
460- unmask_diff = mask * (x_test_adv - x_test )
461- # self.assertGreater(float(np.sum(np.abs(unmask_diff))), 0.0)
462-
463- # Second untargeted attack and norm=2
464- hsj = HopSkipJump (classifier = ptc , targeted = False , max_iter = 20 , max_eval = 100 , init_eval = 10 )
465- x_test_adv = hsj .generate (x_test )
466-
467- self .assertFalse ((x_test == x_test_adv ).all ())
468- self .assertTrue ((x_test_adv <= 1.0001 ).all ())
469- self .assertTrue ((x_test_adv >= - 0.0001 ).all ())
470-
471- y_pred = np .argmax (ptc .predict (x_test ), axis = 1 )
472- y_pred_adv = np .argmax (ptc .predict (x_test_adv ), axis = 1 )
473- self .assertTrue ((y_pred != y_pred_adv ).any ())
474-
475- # Test the masking 1
476- mask = np .random .binomial (n = 1 , p = 0.5 , size = np .prod (x_test .shape ))
477- mask = mask .reshape (x_test .shape )
478-
479- x_test_adv = hsj .generate (x_test , mask = mask )
480- mask_diff = (1 - mask ) * (x_test_adv - x_test )
481- self .assertAlmostEqual (float (np .max (np .abs (mask_diff ))), 0.0 , delta = 0.00001 )
482-
483- unmask_diff = mask * (x_test_adv - x_test )
484- self .assertGreater (float (np .sum (np .abs (unmask_diff ))), 0.0 )
485-
486- # Test the masking 2
487- mask = np .random .binomial (n = 1 , p = 0.5 , size = np .prod (x_test .shape [1 :]))
488- mask = mask .reshape (x_test .shape [1 :])
489-
490- x_test_adv = hsj .generate (x_test , mask = mask )
491- mask_diff = (1 - mask ) * (x_test_adv - x_test )
492- self .assertAlmostEqual (float (np .max (np .abs (mask_diff ))), 0.0 , delta = 0.00001 )
493-
494- unmask_diff = mask * (x_test_adv - x_test )
495- self .assertGreater (float (np .sum (np .abs (unmask_diff ))), 0.0 )
496-
497- # Second untargeted attack and norm=np.inf
498- hsj = HopSkipJump (classifier = ptc , targeted = False , max_iter = 20 , max_eval = 100 , init_eval = 10 , norm = np .Inf )
499- x_test_adv = hsj .generate (x_test )
500-
501- self .assertFalse ((x_test == x_test_adv ).all ())
502- self .assertTrue ((x_test_adv <= 1.0001 ).all ())
503- self .assertTrue ((x_test_adv >= - 0.0001 ).all ())
504-
505- y_pred = np .argmax (ptc .predict (x_test ), axis = 1 )
506- y_pred_adv = np .argmax (ptc .predict (x_test_adv ), axis = 1 )
507- self .assertTrue ((y_pred != y_pred_adv ).any ())
508-
509- # Test the masking 1
510- mask = np .random .binomial (n = 1 , p = 0.5 , size = np .prod (x_test .shape ))
511- mask = mask .reshape (x_test .shape )
512-
513- x_test_adv = hsj .generate (x_test , mask = mask )
514- mask_diff = (1 - mask ) * (x_test_adv - x_test )
515- self .assertAlmostEqual (float (np .max (np .abs (mask_diff ))), 0.0 , delta = 0.00001 )
516-
517- unmask_diff = mask * (x_test_adv - x_test )
518- self .assertGreater (float (np .sum (np .abs (unmask_diff ))), 0.0 )
519-
520- # Test the masking 2
521- mask = np .random .binomial (n = 1 , p = 0.5 , size = np .prod (x_test .shape [1 :]))
522- mask = mask .reshape (x_test .shape [1 :])
523-
524- x_test_adv = hsj .generate (x_test , mask = mask )
525- mask_diff = (1 - mask ) * (x_test_adv - x_test )
526- self .assertAlmostEqual (float (np .max (np .abs (mask_diff ))), 0.0 , delta = 0.00001 )
527-
528- unmask_diff = mask * (x_test_adv - x_test )
529- self .assertGreater (float (np .sum (np .abs (unmask_diff ))), 0.0 )
530-
531- # Check that x_test has not been modified by attack and classifier
532- self .assertAlmostEqual (float (np .max (np .abs (x_test_original - x_test ))), 0.0 , delta = 0.00001 )
378+ # def test_4_pytorch_classifier(self):
379+ # """
380+ # Third test with the PyTorchClassifier.
381+ # :return:
382+ # """
383+ # x_test = np.swapaxes(self.x_test_mnist, 1, 3).astype(np.float32)
384+ # x_test_original = x_test.copy()
385+ #
386+ # # Build PyTorchClassifier
387+ # ptc = get_image_classifier_pt()
388+ #
389+ # # First targeted attack and norm=2
390+ # hsj = HopSkipJump(classifier=ptc, targeted=True, max_iter=20, max_eval=100, init_eval=10)
391+ # params = {"y": random_targets(self.y_test_mnist, ptc.nb_classes)}
392+ # x_test_adv = hsj.generate(x_test, **params)
393+ #
394+ # self.assertFalse((x_test == x_test_adv).all())
395+ # self.assertTrue((x_test_adv <= 1.0001).all())
396+ # self.assertTrue((x_test_adv >= -0.0001).all())
397+ #
398+ # target = np.argmax(params["y"], axis=1)
399+ # y_pred_adv = np.argmax(ptc.predict(x_test_adv), axis=1)
400+ # self.assertTrue((target == y_pred_adv).any())
401+ #
402+ # # Test the masking 1
403+ # mask = np.random.binomial(n=1, p=0.5, size=np.prod(x_test.shape))
404+ # mask = mask.reshape(x_test.shape)
405+ #
406+ # params.update(mask=mask)
407+ # x_test_adv = hsj.generate(x_test, **params)
408+ # mask_diff = (1 - mask) * (x_test_adv - x_test)
409+ # self.assertAlmostEqual(float(np.max(np.abs(mask_diff))), 0.0, delta=0.00001)
410+ #
411+ # unmask_diff = mask * (x_test_adv - x_test)
412+ # self.assertGreater(float(np.sum(np.abs(unmask_diff))), 0.0)
413+ #
414+ # # Test the masking 2
415+ # mask = np.random.binomial(n=1, p=0.5, size=np.prod(x_test.shape[1:]))
416+ # mask = mask.reshape(x_test.shape[1:])
417+ #
418+ # params.update(mask=mask)
419+ # x_test_adv = hsj.generate(x_test, **params)
420+ # mask_diff = (1 - mask) * (x_test_adv - x_test)
421+ # self.assertAlmostEqual(float(np.max(np.abs(mask_diff))), 0.0, delta=0.00001)
422+ #
423+ # unmask_diff = mask * (x_test_adv - x_test)
424+ # self.assertGreater(float(np.sum(np.abs(unmask_diff))), 0.0)
425+ #
426+ # # First targeted attack and norm=np.inf
427+ # hsj = HopSkipJump(classifier=ptc, targeted=True, max_iter=5, max_eval=100, init_eval=10, norm=np.Inf)
428+ # params = {"y": random_targets(self.y_test_mnist, ptc.nb_classes)}
429+ # x_test_adv = hsj.generate(x_test, **params)
430+ #
431+ # self.assertFalse((x_test == x_test_adv).all())
432+ # self.assertTrue((x_test_adv <= 1.0001).all())
433+ # self.assertTrue((x_test_adv >= -0.0001).all())
434+ #
435+ # target = np.argmax(params["y"], axis=1)
436+ # y_pred_adv = np.argmax(ptc.predict(x_test_adv), axis=1)
437+ # self.assertTrue((target == y_pred_adv).any())
438+ #
439+ # # Test the masking 1
440+ # mask = np.random.binomial(n=1, p=0.5, size=np.prod(x_test.shape))
441+ # mask = mask.reshape(x_test.shape)
442+ #
443+ # params.update(mask=mask)
444+ # x_test_adv = hsj.generate(x_test, **params)
445+ # mask_diff = (1 - mask) * (x_test_adv - x_test)
446+ # self.assertAlmostEqual(float(np.max(np.abs(mask_diff))), 0.0, delta=0.00001)
447+ #
448+ # unmask_diff = mask * (x_test_adv - x_test)
449+ # self.assertGreater(float(np.sum(np.abs(unmask_diff))), 0.0)
450+ #
451+ # # Test the masking 2
452+ # mask = np.random.binomial(n=1, p=0.5, size=np.prod(x_test.shape[1:]))
453+ # mask = mask.reshape(x_test.shape[1:])
454+ #
455+ # params.update(mask=mask)
456+ # x_test_adv = hsj.generate(x_test, **params)
457+ # mask_diff = (1 - mask) * (x_test_adv - x_test)
458+ # self.assertAlmostEqual(float(np.max(np.abs(mask_diff))), 0.0, delta=0.00001)
459+ #
460+ # unmask_diff = mask * (x_test_adv - x_test)
461+ # # self.assertGreater(float(np.sum(np.abs(unmask_diff))), 0.0)
462+ #
463+ # # Second untargeted attack and norm=2
464+ # hsj = HopSkipJump(classifier=ptc, targeted=False, max_iter=20, max_eval=100, init_eval=10)
465+ # x_test_adv = hsj.generate(x_test)
466+ #
467+ # self.assertFalse((x_test == x_test_adv).all())
468+ # self.assertTrue((x_test_adv <= 1.0001).all())
469+ # self.assertTrue((x_test_adv >= -0.0001).all())
470+ #
471+ # y_pred = np.argmax(ptc.predict(x_test), axis=1)
472+ # y_pred_adv = np.argmax(ptc.predict(x_test_adv), axis=1)
473+ # self.assertTrue((y_pred != y_pred_adv).any())
474+ #
475+ # # Test the masking 1
476+ # mask = np.random.binomial(n=1, p=0.5, size=np.prod(x_test.shape))
477+ # mask = mask.reshape(x_test.shape)
478+ #
479+ # x_test_adv = hsj.generate(x_test, mask=mask)
480+ # mask_diff = (1 - mask) * (x_test_adv - x_test)
481+ # self.assertAlmostEqual(float(np.max(np.abs(mask_diff))), 0.0, delta=0.00001)
482+ #
483+ # unmask_diff = mask * (x_test_adv - x_test)
484+ # self.assertGreater(float(np.sum(np.abs(unmask_diff))), 0.0)
485+ #
486+ # # Test the masking 2
487+ # mask = np.random.binomial(n=1, p=0.5, size=np.prod(x_test.shape[1:]))
488+ # mask = mask.reshape(x_test.shape[1:])
489+ #
490+ # x_test_adv = hsj.generate(x_test, mask=mask)
491+ # mask_diff = (1 - mask) * (x_test_adv - x_test)
492+ # self.assertAlmostEqual(float(np.max(np.abs(mask_diff))), 0.0, delta=0.00001)
493+ #
494+ # unmask_diff = mask * (x_test_adv - x_test)
495+ # self.assertGreater(float(np.sum(np.abs(unmask_diff))), 0.0)
496+ #
497+ # # Second untargeted attack and norm=np.inf
498+ # hsj = HopSkipJump(classifier=ptc, targeted=False, max_iter=20, max_eval=100, init_eval=10, norm=np.Inf)
499+ # x_test_adv = hsj.generate(x_test)
500+ #
501+ # self.assertFalse((x_test == x_test_adv).all())
502+ # self.assertTrue((x_test_adv <= 1.0001).all())
503+ # self.assertTrue((x_test_adv >= -0.0001).all())
504+ #
505+ # y_pred = np.argmax(ptc.predict(x_test), axis=1)
506+ # y_pred_adv = np.argmax(ptc.predict(x_test_adv), axis=1)
507+ # self.assertTrue((y_pred != y_pred_adv).any())
508+ #
509+ # # Test the masking 1
510+ # mask = np.random.binomial(n=1, p=0.5, size=np.prod(x_test.shape))
511+ # mask = mask.reshape(x_test.shape)
512+ #
513+ # x_test_adv = hsj.generate(x_test, mask=mask)
514+ # mask_diff = (1 - mask) * (x_test_adv - x_test)
515+ # self.assertAlmostEqual(float(np.max(np.abs(mask_diff))), 0.0, delta=0.00001)
516+ #
517+ # unmask_diff = mask * (x_test_adv - x_test)
518+ # self.assertGreater(float(np.sum(np.abs(unmask_diff))), 0.0)
519+ #
520+ # # Test the masking 2
521+ # mask = np.random.binomial(n=1, p=0.5, size=np.prod(x_test.shape[1:]))
522+ # mask = mask.reshape(x_test.shape[1:])
523+ #
524+ # x_test_adv = hsj.generate(x_test, mask=mask)
525+ # mask_diff = (1 - mask) * (x_test_adv - x_test)
526+ # self.assertAlmostEqual(float(np.max(np.abs(mask_diff))), 0.0, delta=0.00001)
527+ #
528+ # unmask_diff = mask * (x_test_adv - x_test)
529+ # self.assertGreater(float(np.sum(np.abs(unmask_diff))), 0.0)
530+ #
531+ # # Check that x_test has not been modified by attack and classifier
532+ # self.assertAlmostEqual(float(np.max(np.abs(x_test_original - x_test))), 0.0, delta=0.00001)
533533
534534 def test_5_pytorch_resume (self ):
535535 x_test = np .reshape (self .x_test_mnist , (self .x_test_mnist .shape [0 ], 1 , 28 , 28 )).astype (np .float32 )
0 commit comments