This repository hosts code used to obtain results in our paper: Defending Adversarial Attacks on Deep Learning Based Power Allocation in Massive MIMO Using Denoising Autoencoders
data/: This folder contains the testing data set. Our work uses the publicly available Power Allocation in Multi-Cell Massive MIMO dataset. To download the training data set for our experiments, download themulti_cell.zipfile, unzip and copy the file nameddataset_maxprod.matinto thedata/folder in this repository.saved_nn_models/: This folder contains saved neural network models from our experiments. Load these models to obtain the same results we showed in our paper.model_1/andmodel_2/sub-directories contain the saved models for model architecture 1 and model architecture 2 respectively, which are detailed in our paper.src/folder contains:attacks.pythat implements the adversarial attacks we use.- model architecture and training scripts:
baseline.py,dae_training.pyandadv_regressor.py. - result evaluation scripts:
eval_networks.pyto evaluate semi-whitebox experiments andeval_blackbox.pyto evaluate blackbox experiments. Makefilethat facilitates running the experiments.
requirement.txt: A snapshot of the Python package versions the experiments were run with.
- Ensure that you're in the
src/folder:
$ pwd
DAE_for_adv_attacks_in_MIMO/src
- Use the
Makefileto run semi-whitebox experiments:
make eval_all
- Use the
Makefileto run blackbox experiments:
make eval_blackbox_all
- Ensure that you're in the
src/folder:
$ pwd
DAE_for_adv_attacks_in_MIMO/src
- Ensure that you have downloaded the dataset zip file from the dataset website, and have copied the training set into the
data/folder as/data/dataset_maxprod.mat. - To re-train the baseline DL model:
make baseline_all
- To re-train the DAE defense model:
make dae_all
- To re-train the adversarially-trained regressor model:
make adv_regressor_all
To ensure success running of the program, the versions Python packages we used are listed in requirements.txt. To align the versions of your packages to this file, simply run:
pip install -r requirements.txt