Environment 
---
Make sure the environment version is the same as our settings to reproduce the experiment.
- Tensorflow 2.3.0
- Jupyter notebook 
- NumPy
- alibi 
- matplotlib
- scipy

Dataset
---
We use MNIST as the experiment dataset. To run our experiments correctly, you can transfer the MNIST dataset into images with `mnist_to_images.ipynb`.

Counterfactual Adversarial Examples Generation
---
You can reproduce the samples by running `counterfactual_adversarial_example_generation.ipynb`.

Models
---
Make sure that you have already finished the counterfactual adversarial examples generation before training the robust model. Run `model_training.ipynb` to get the robust model and the input array for the membership inference attack.

Membership Inference Attack
---
Run the files mentioned above to get the input of the membership inference attack. Deploy the attack with `membership_inference_attack.ipynb`.