def main(): opt = parse_args() if not os.path.exists(opt.dataset): os.mkdir(opt.dataset) local_path = '.' output_directory = os.path.join(opt.dataset, 'checkpoint/') filehandler = logging.FileHandler(os.path.join(opt.dataset, 'summary.log')) streamhandler = logging.StreamHandler() logger = logging.getLogger('') logger.setLevel(logging.INFO) logger.addHandler(filehandler) logger.addHandler(streamhandler) logging.info(opt) target_hyperparams = config_choice(opt.data_dir, opt.dataset) dataset_dir = target_hyperparams.pop('dataset') train_dataset, val_dataset, test_dataset = ImagePredictor.Dataset.from_folders( dataset_dir) if isinstance(val_dataset, pd.DataFrame) and len(val_dataset) < 1: val_dataset = None predictor = ImagePredictor(log_dir=output_directory) num_classes = target_hyperparams.pop('classes') assert num_classes == len( train_dataset.classes ), f'num_class mismatch, {num_classes} vs {len(train_dataset.classes)}' # overwriting default by command line: if opt.batch_size > 0: target_hyperparams['batch_size'] = opt.batch_size num_trials = target_hyperparams.pop('num_trials') ngpus_per_trial = target_hyperparams.pop('ngpus_per_trial') if opt.num_epochs > 0: target_hyperparams['epochs'] = opt.num_epochs num_trials = opt.num_trials if opt.num_trials > 0 else num_trials if opt.ngpus_per_trial >= 0: ngpus_per_trial = opt.ngpus_per_trial predictor.fit(train_data=train_dataset, val_data=val_dataset, hyperparameters=target_hyperparams, ngpus_per_trial=ngpus_per_trial, num_trials=num_trials, verbosity=2) summary = predictor.fit_summary() logging.info('Top-1 val acc: %.3f' % summary['train_acc']) logger.info(summary)
def main(): opt = parse_args() if not os.path.exists(opt.dataset): os.mkdir(opt.dataset) dataset_path = os.path.join(opt.data_dir, opt.dataset) local_path = os.path.dirname(__file__) output_directory = os.path.join(opt.dataset, 'checkpoint/') filehandler = logging.FileHandler(os.path.join(opt.dataset, 'summary.log')) streamhandler = logging.StreamHandler() logger = logging.getLogger('') logger.setLevel(logging.INFO) logger.addHandler(filehandler) logger.addHandler(streamhandler) logging.info(opt) target = config_choice(opt.data_dir, opt.dataset) load_dataset = task.Dataset(target['dataset']) classifier = task.fit(dataset=load_dataset, output_directory=output_directory, net=target['net'], optimizer=target['optimizer'], tricks=target['tricks'], lr_config=target['lr_config'], resume=opt.resume, epochs=opt.num_epochs, ngpus_per_trial=opt.ngpus_per_trial, num_trials=opt.num_trials, batch_size=opt.batch_size, verbose=True, plot_results=True) summary = classifier.fit_summary(output_directory=opt.dataset, verbosity=4) logging.info('Top-1 val acc: %.3f' % classifier.results['best_reward']) logger.info(summary) if opt.submission: test_dataset = task.Dataset(os.path.join(opt.data_dir, opt.dataset, 'test'), train=False) inds, probs, probs_all, value = predict_details( test_dataset, classifier, load_dataset) ag.utils.generate_csv_submission(dataset_path, opt.dataset, local_path, inds, probs_all, value, opt.custom)