@@ -35,12 +35,15 @@ def test_membership_leakage_decision_tree(art_warning, decision_tree_estimator,
3535 extra_classifier = decision_tree_estimator ()
3636 (x_train , y_train ), _ = get_iris_dataset
3737 prev = classifier .model .tree_
38- leakage = PDTP (classifier , extra_classifier , x_train , y_train )
39- logger .info ("Average PDTP leakage: %.2f" , (np .average (leakage )))
40- logger .info ("Max PDTP leakage: %.2f" , (np .max (leakage )))
38+ avg_leakage , worse_leakage , std_dev = PDTP (classifier , extra_classifier , x_train , y_train )
39+ logger .info ("Average PDTP leakage: %.2f" , (np .average (avg_leakage )))
40+ logger .info ("Max PDTP leakage: %.2f" , (np .max (avg_leakage )))
4141 assert classifier .model .tree_ == prev
42- assert np .all (leakage >= 1.0 )
43- assert leakage .shape [0 ] == x_train .shape [0 ]
42+ assert np .all (avg_leakage >= 1.0 )
43+ assert np .all (worse_leakage >= avg_leakage )
44+ assert avg_leakage .shape [0 ] == x_train .shape [0 ]
45+ assert worse_leakage .shape [0 ] == x_train .shape [0 ]
46+ assert std_dev .shape [0 ] == x_train .shape [0 ]
4447 except ARTTestException as e :
4548 art_warning (e )
4649
@@ -51,32 +54,40 @@ def test_membership_leakage_tabular(art_warning, tabular_dl_estimator, get_iris_
5154 classifier = tabular_dl_estimator ()
5255 extra_classifier = tabular_dl_estimator ()
5356 (x_train , y_train ), _ = get_iris_dataset
54- leakage = PDTP (classifier , extra_classifier , x_train , y_train )
55- logger .info ("Average PDTP leakage: %.2f" , (np .average (leakage )))
56- logger .info ("Max PDTP leakage: %.2f" , (np .max (leakage )))
57- assert np .all (leakage >= 1.0 )
58- assert leakage .shape [0 ] == x_train .shape [0 ]
57+ avg_leakage , worse_leakage , std_dev = PDTP (classifier , extra_classifier , x_train , y_train )
58+ logger .info ("Average PDTP leakage: %.2f" , (np .average (avg_leakage )))
59+ logger .info ("Max PDTP leakage: %.2f" , (np .max (avg_leakage )))
60+ assert np .all (avg_leakage >= 1.0 )
61+ assert np .all (worse_leakage >= avg_leakage )
62+ assert avg_leakage .shape [0 ] == x_train .shape [0 ]
63+ assert worse_leakage .shape [0 ] == x_train .shape [0 ]
64+ assert std_dev .shape [0 ] == x_train .shape [0 ]
5965 except ARTTestException as e :
6066 art_warning (e )
6167
6268
63- @pytest .mark .skip_framework ("keras" , "kerastf" , "tensorflow1" , "tensorflow2v1" , "mxnet" )
69+ @pytest .mark .skip_framework ("scikitlearn" , " keras" , "kerastf" , "tensorflow1" , "tensorflow2v1" , "mxnet" )
6470def test_membership_leakage_image (art_warning , image_dl_estimator , get_default_mnist_subset ):
6571 try :
6672 classifier , _ = image_dl_estimator ()
6773 extra_classifier , _ = image_dl_estimator ()
6874 (x_train , y_train ), _ = get_default_mnist_subset
6975 indexes = random .sample (range (x_train .shape [0 ]), 100 )
70- leakage = PDTP (classifier , extra_classifier , x_train , y_train , indexes = indexes , num_iter = 1 )
71- logger .info ("Average PDTP leakage: %.2f" , (np .average (leakage )))
72- logger .info ("Max PDTP leakage: %.2f" , (np .max (leakage )))
73- assert np .all (leakage >= 1.0 )
74- assert leakage .shape [0 ] == len (indexes )
76+ avg_leakage , worse_leakage , std_dev = PDTP (
77+ classifier , extra_classifier , x_train , y_train , indexes = indexes , num_iter = 1
78+ )
79+ logger .info ("Average PDTP leakage: %.2f" , (np .average (avg_leakage )))
80+ logger .info ("Max PDTP leakage: %.2f" , (np .max (avg_leakage )))
81+ assert np .all (avg_leakage >= 1.0 )
82+ assert np .all (worse_leakage >= avg_leakage )
83+ assert avg_leakage .shape [0 ] == 100
84+ assert worse_leakage .shape [0 ] == 100
85+ assert std_dev .shape [0 ] == 100
7586 except ARTTestException as e :
7687 art_warning (e )
7788
7889
79- @pytest .mark .skip_framework ("keras" , "kerastf" , "tensorflow1" , "mxnet" )
90+ @pytest .mark .skip_framework ("scikitlearn" , " keras" , "kerastf" , "tensorflow1" , "mxnet" )
8091def test_errors (art_warning , tabular_dl_estimator , get_iris_dataset , image_data_generator ):
8192 try :
8293 classifier = tabular_dl_estimator ()
0 commit comments