The code is downloaded from https://openreview.net/attachment?id=gzeruP-0J29&name=supplementary_material
We only write a few small modules to implement the (greedy) reflected loss and R-PGD, as described in the experimental section

For simplicity, we stored the intermediate results in code/results. Simply run the following to generate the results in the table:
   python tr_readcsv.py
   python ts_readcsv.py

Otherwise, to start from the beginning, first run the following commands, e.g. for 'eps = 2', 'lr = 1', 'steps = 8', 'seed = 3':
   python train.py --mode npgd --attack_eps 2 --attack_lr 1 --attack_step 8 --random_seed 3 --time_stamp npgd8_eps2_lr1_seed3
   python evaluation.py --model_path results/checkpoints/CIFAR10_NPGD_npgd8_eps2_lr1_seed3_best.pth --eps 8 --attack_method PGD

Repeat the above for seeds in range 1, 2, 3, 4, 5. Then run the following to generate the results in the table:
   cd results
   python tr_readcsv.py 
   python ts_readcsv.py

