Noisy Differentiable Architecture Search [BMVC 2021]

October 17, 2021 ยท View on GitHub

This repository includes the implementation of NoisyDARTS.

Requirements

To install requirements:

pip install -r requirements.txt

We use CIFAR-10 and ImageNet datasets, which can be downloaded by torchvision automatically. We follow the standard preprocessing for both datasets.

Searching

To perform a standard NoisyDARTS search, execute for example:

nohup python -u train_search.py --exp_name noisy_darts_a --factor_skip 0.2 --add_noise_skip --gpu 0 --seed 10 > noisy_darts_a.log 2>&1 &

Training

To train the model(s) in the paper, run for example:

nohup python -u train.py --auxiliary --cutout --save noisy_darts_a --arch noisy_darts_a --gpu 0 > noisy_darts_a.log 2>&1 &

Evaluation

To evaluate CIFAR models, run for example:

python verify.py --auxiliary --arch noisy_darts_a --model-path pretrained/noisy_darts_a.pt

More evalutaion commands can be found in scripts/run_verify.sh.

Pre-trained Models

You can download pretrained models here:

Results

NoisyDARTS Models Searched on CIFAR-10

ModelsSearch StrategyMultiply-adds (M)Parameters (M)Top-1 (%)
NoisyDARTS-aGaussian, lambda=0.25343.2597.61
NoisyDARTS-bGaussian, lambda=0.15113.0997.53
NoisyDARTS-cUniform, lambda=0.25393.3397.40
NoisyDARTS-dUniform, lambda=0.15013.0697.42
NoisyDARTS-eGaussian, Multiplicative, std=0.15393.2497.55
NoisyDARTS-fGaussian, Multiplicative, std=0.24432.6897.18
NoisyDARTS-gGaussian, lambda=0.2, mean=0.55493.3297.49
NoisyDARTS-hGaussian, lambda=0.2, mean=1.05113.0197.35
NoisyDARTS-iGaussian, lambda=0.1, mean=0.54953.0797.28
NoisyDARTS-jGaussian, lambda=0.1, mean=1.04762.9497.21

Our model achieves the following performance on :

Image Classification on ImageNet

Model nameTop 1 AccuracyTop 5 Accuracy
NoisyDARTS-A77.9%94.0%

Citation

@inproceedings{chu2021noisy,
  title={Noisy Differentiable Architecture Search},
  author={Chu, Xiangxiang and Zhang, Bo},
  booktitle={BMVC},
  year={2021}
}