import argparse

def get_parse():
  parser = argparse.ArgumentParser(description='MetaD2A vs NSGANETv2')
  parser.add_argument('--save-path', type=str, default='../results', help='the path of save directory')
  parser.add_argument('--data-path', type=str, default='../data', help='the path of save directory')
  parser.add_argument('--data-name', type=str, default=None, help='meta-test dataset name')
  parser.add_argument('--num-gen-arch', type=int, default=200,
                      help='the number of candidate architectures generated by the generator')
  parser.add_argument('--bound', type=int, default=None)

  # original setting
  parser.add_argument('--seed', type=int, default=-1, help='random seed')
  parser.add_argument('--batch-size', type=int, default=96, help='batch size')
  parser.add_argument('--num_workers', type=int, default=2, help='number of workers for data loading')
  parser.add_argument('--gpu', type=str, default='0', help='set visible gpus')
  parser.add_argument('--lr', type=float, default=0.01, help='init learning rate')
  parser.add_argument('--momentum', type=float, default=0.9, help='momentum')
  parser.add_argument('--weight_decay', type=float, default=4e-5, help='weight decay')
  parser.add_argument('--report_freq', type=float, default=50, help='report frequency')
  parser.add_argument('--epochs', type=int, default=150, help='num of training epochs')
  parser.add_argument('--grad_clip', type=float, default=5, help='gradient clipping')
  parser.add_argument('--cutout', action='store_true', default=True, help='use cutout')
  parser.add_argument('--cutout_length', type=int, default=16, help='cutout length')
  parser.add_argument('--autoaugment', action='store_true', default=True, help='use auto augmentation')

  parser.add_argument('--topk', type=int, default=10, help='top k checkpoints to save')
  parser.add_argument('--evaluate', action='store_true', default=False, help='evaluate a pretrained model')
  # model related
  parser.add_argument('--model', default='resnet101', type=str, metavar='MODEL',
                      help='Name of model to train (default: "countception"')
  parser.add_argument('--model-config', type=str, default='search',
                      help='location of a json file of specific model declaration')
  parser.add_argument('--initial-checkpoint', default='', type=str, metavar='PATH',
                      help='Initialize model from this checkpoint (default: none)')
  parser.add_argument('--drop', type=float, default=0.2,
                      help='dropout rate')
  parser.add_argument('--drop-path', type=float, default=0.2, metavar='PCT',
                      help='Drop path rate (default: None)')
  parser.add_argument('--img-size', type=int, default=224,
                      help='input resolution (192 -> 256)')
  args = parser.parse_args()
  return args