def main(): """ Main function. """ # Obtain the search space nn_domain = get_nn_domain_from_constraints('cnn', MAX_NUM_LAYERS, MIN_NUM_LAYERS, MAX_MASS, MIN_MASS, MAX_IN_DEGREE, MAX_OUT_DEGREE, MAX_NUM_EDGES, MAX_NUM_UNITS_PER_LAYER, MIN_NUM_UNITS_PER_LAYER) # Obtain a worker manager: A worker manager (defined in opt/worker_manager.py) is used # to manage (possibly) multiple workers. For a RealWorkerManager, the budget should be # given in wall clock seconds. worker_manager = RealWorkerManager(GPU_IDS, EXP_DIR) # Obtain a function caller: A function_caller is used to evaluate a function defined on # neural network architectures. We have defined the CNNFunctionCaller in # demos/cnn_function_caller.py. The train_params argument can be used to specify # additional training parameters such as the learning rate etc. train_params = Namespace(data_dir=DATA_DIR) func_caller = CNNFunctionCaller('cifar10', nn_domain, train_params, tmp_dir=TMP_DIR, reporter=REPORTER) # Run nasbot opt_val, opt_nn, _ = nasbot.nasbot(func_caller, worker_manager, BUDGET, reporter=REPORTER) # Print the optimal value and visualise the best network. REPORTER.writeln('\nOptimum value found: %f' % opt_val) visualise_file = os.path.join(EXP_DIR, 'cnn_opt_network') REPORTER.writeln('Optimal network visualised in %s.eps' % (visualise_file)) visualise_nn(opt_nn, EXP_DIR + visualise_file)
def main(): """ Main function. """ # Obtain the search space nn_domain = get_nn_domain_from_constraints('mlp-reg', MAX_NUM_LAYERS, MIN_NUM_LAYERS, MAX_MASS, MIN_MASS, MAX_IN_DEGREE, MAX_OUT_DEGREE, MAX_NUM_EDGES, MAX_NUM_UNITS_PER_LAYER, MIN_NUM_UNITS_PER_LAYER) # Obtain a worker manager: A worker manager (defined in opt/worker_manager.py) is used # to manage (possibly) multiple workers. For a RealWorkerManager, the budget should be # given in wall clock seconds. worker_manager = RealWorkerManager(GPU_IDS) # Obtain a function caller: A function_caller is used to evaluate a function defined on # neural network architectures. We have defined the MLPFunctionCaller in # demos/mlp_function_caller.py. The train_params can be used to specify additional # training parameters such as the learning rate etc. train_params = Namespace(data_train_file=get_train_file_name(DATASET)) func_caller = MLPFunctionCaller(DATASET, nn_domain, train_params, reporter=REPORTER, tmp_dir=TMP_DIR) # Run nasbot opt_val, opt_nn, _ = nasbot.nasbot(func_caller, worker_manager, BUDGET, reporter=REPORTER) # Print the optimal value and visualise the best network. REPORTER.writeln('\nOptimum value found: ' % (opt_val)) REPORTER.writeln('Optimal network visualised in mlp_opt_network.eps.') visualise_nn(opt_nn, 'mlp_opt_network')