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.zip
file, unzip and copy the file nameddataset_maxprod.mat
into 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.py
that implements the adversarial attacks we use.- model architecture and training scripts:
baseline.py
,dae_training.py
andadv_regressor.py
. - result evaluation scripts:
eval_networks.py
to evaluate semi-whitebox experiments andeval_blackbox.py
to evaluate blackbox experiments. Makefile
that 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
Makefile
to run semi-whitebox experiments:
make eval_all
- Use the
Makefile
to 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