in scenarios/classification/tools/sweep.py [0:0]
def _get_parser(default_params: Dict[str, List[Any]]) -> Namespace:
""" Get parser for this script. """
parser = argparse.ArgumentParser(
description=argparse_desc_msg,
epilog=argparse_epilog_msg(default_params=default_params),
formatter_class=RawTextHelpFormatter,
)
parser.add_argument(
"--learning-rate",
"-lr",
dest="learning_rates",
nargs="+",
help="Learning rate - recommended options: [1e-3, 1e-4, 1e-5] ",
type=float,
)
parser.add_argument(
"--epoch",
"-e",
dest="epochs",
nargs="+",
help="Epochs - recommended options: [3, 5, 10, 15]",
type=int,
)
parser.add_argument(
"--batch-size",
"-bs",
dest="batch_sizes",
nargs="+",
help="Batch sizes - recommended options: [8, 16, 32, 64]",
type=int,
)
parser.add_argument(
"--im-size",
"-is",
dest="im_sizes",
nargs="+",
help="Image sizes - recommended options: [299, 499]",
type=int,
)
parser.add_argument(
"--architecture",
"-a",
dest="architectures",
nargs="+",
choices=["squeezenet1_1", "resnet18", "resnet34", "resnet50"],
help="Choose an architecture.",
type=str,
)
parser.add_argument(
"--transform",
"-t",
dest="transforms",
nargs="+",
help="Tranform (data augmentation) - options: [True, False]",
type=_str_to_bool,
)
parser.add_argument(
"--dropout",
"-d",
dest="dropouts",
nargs="+",
help="Dropout - recommended options: [0.5]",
type=float,
)
parser.add_argument(
"--weight-decay",
"-wd",
dest="weight_decays",
nargs="+",
help="Weight decay - recommended options: [0.01]",
type=float,
)
parser.add_argument(
"--training-schedule",
"-ts",
dest="training_schedules",
nargs="+",
choices=["head_only", "body_only", "head_first_then_body"],
help="Choose a training schedule",
type=str,
)
parser.add_argument(
"--discriminative-lr",
"-dl",
dest="discriminative_lrs",
nargs="+",
help="Discriminative learning rate - options: [True, False]. To use discriminative learning rates, training schedule must not be 'head_only'",
choices=["True", "False"],
type=_str_to_bool,
)
parser.add_argument(
"--one-cycle-policy",
"-ocp",
dest="one_cycle_policies",
nargs="+",
help="one cycle policy - options: [True, False]",
type=_str_to_bool,
)
parser.add_argument(
"--inputs",
"-i",
dest="inputs",
nargs="+",
help="A list of data paths to run the tests on. The datasets must be structured so that each class is in a separate folder.",
type=str,
)
parser.add_argument(
"--early-stopping",
dest="early_stopping",
action="store_true",
help="Stop training early if possible",
)
parser.add_argument(
"--repeat",
"-r",
dest="repeat",
help="The number of times to repeat each permutation",
type=int,
)
parser.add_argument(
"--output", "-o", dest="output", help="The path of the output file."
)
parser.set_defaults(
repeat=3, early_stopping=False, inputs=None, benchmark=False
)
args = parser.parse_args()
# if discriminative lr is on, we cannot have a 'head_only'
# training_schedule
if args.discriminative_lrs is not None and True in args.discriminative_lrs:
assert "head_only" not in args.training_schedules
# get mapping of architecture enum: ex. "resnet34" -->
# Architecture.resnet34 -> models.resnet34
if args.architectures is not None:
args.architectures = [Architecture[a] for a in args.architectures]
# get mapping of training enum: ex. "head_only" -->
# TrainingSchedule.head_only --> 0
if args.training_schedules is not None:
args.training_schedules = [
TrainingSchedule[t] for t in args.training_schedules
]
return args