From e7c21abb0917fb0a47ab4687a3b90041f9488220 Mon Sep 17 00:00:00 2001 From: Shuang Song Date: Wed, 2 Dec 2020 09:37:20 -0800 Subject: [PATCH] Add a figure in README for membership inference attack. PiperOrigin-RevId: 345249792 --- .../membership_inference_attack/README.md | 2 ++ .../codelab_roc_fig.png | Bin 0 -> 14626 bytes 2 files changed, 2 insertions(+) create mode 100644 tensorflow_privacy/privacy/membership_inference_attack/codelab_roc_fig.png diff --git a/tensorflow_privacy/privacy/membership_inference_attack/README.md b/tensorflow_privacy/privacy/membership_inference_attack/README.md index 88e2281..4b9d74a 100644 --- a/tensorflow_privacy/privacy/membership_inference_attack/README.md +++ b/tensorflow_privacy/privacy/membership_inference_attack/README.md @@ -213,6 +213,8 @@ import tensorflow_privacy.privacy.membership_inference_attack.plotting as plotti figure = plotting.plot_roc_curve(max_auc_attacker.roc_curve) ``` +which would give a figure like the one below +![roc_fig](https://github.com/tensorflow/privacy/blob/master/tensorflow_privacy/privacy/membership_inference_attack/codelab_roc_fig.png?raw=true) Additionally, we provide funcitonality to convert the attack results into Pandas data frame: diff --git a/tensorflow_privacy/privacy/membership_inference_attack/codelab_roc_fig.png b/tensorflow_privacy/privacy/membership_inference_attack/codelab_roc_fig.png new file mode 100644 index 0000000000000000000000000000000000000000..baae749a0769557bfc6e7a96bd008f0111fcd926 GIT binary patch literal 14626 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 F{{`sWd)oj2 literal 0 HcmV?d00001