This is the code implementation for the paper "Accurate and Robust Neural Architecture Search via a Flexible Supernet"
- Python 3.7.4
- torch 1.8.0 + cu111
- torchvision 0.9.0 + cu111
- torchattacks 3.5.1
Search for adversarially robust neural architectures in NAS-Bench-101/NAS-Bench-201/DARTS search spaces:
- NAS-Bench-101 search space:
python ./nb101/train_search.py
- NAS-Bench-201 search space:
python ./nb201/train_search.py
- DARTS search space:
python ./search/train_search.py
Train the derived architectures for evaluation in NAS-Bench-101/NAS-Bench-201/DARTS search spaces:
- NAS-Bench-101 search space:
python ./nb101/adv_train.py
python ./nb101/adv_test.py
- NAS-Bench-201 search space:
python ./nb201/adv_train.py
python ./nb201/adv_test.py
- DARTS search space:
Training on CIFAR-10/CIFAR-100/SVHN:
python ./train_eval/adv_train.py
Training on Tiny-ImageNet-200:
python ./train_eval/adv_train_tinyimagenet.py
Training on ImageNet-1K:
python ./train_eval/adv_train_imagenet.py
Test on CIFAR-10/CIFAR-100/SVHN/Tiny-ImageNet-200:
python ./train_eval/adv_test.py
Test on ImageNet-1K:
python ./train_eval/adv_test_imagenet.py
Test trained architectures under black-box settings:
python ./train_eval/adv_test_blackbox.py
Get the visualization about the derived architecture parameters:
python ./train_eval/vis_arch_parameter.py
Get the visualization regarding the filter number ratio:
python ./train_eval/vis_delta_m.py
Get the visualization in terms of the loss landscape:
python ./train_eval/vis_loss_landscape.py