def test_experiment_config_parser(tmp_path): tmp_data_dir = tmp_path / "tmpdata" cfg_fname = os.path.join(Config.get_dir(), 'experiments.json') cfg = memcnn.experiment.factory.load_experiment_config( cfg_fname, ['cifar10', 'resnet110']) memcnn.experiment.factory.experiment_config_parser(cfg, str(tmp_data_dir), workers=None)
def main(): # setup logging memcnn.utils.log.setup(True) # specify defaults for arguments use_cuda = torch.cuda.is_available() workers = 16 data_dir = Config()['data_dir'] results_dir = Config()['results_dir'] experiments_file = os.path.join(os.path.dirname(__file__), 'config', 'experiments.json') start_fresh = False # parse arguments parser = argparse.ArgumentParser(description='Run memcnn experiments.') parser.add_argument( 'experiment_tags', type=str, nargs='+', help= 'Experiment tags to run and combine from the experiment config file') parser.add_argument( '--workers', dest='workers', type=int, default=workers, help='Number of workers for data loading (Default: {})'.format( workers)) parser.add_argument( '--results-dir', dest='results_dir', type=str, default=results_dir, help='Directory for storing results (Default: {})'.format(results_dir)) parser.add_argument( '--data-dir', dest='data_dir', type=str, default=data_dir, help='Directory for input data (Default: {})'.format(data_dir)) parser.add_argument( '--experiments-file', dest='experiments_file', type=str, default=experiments_file, help='Experiments file (Default: {})'.format(experiments_file)) parser.add_argument( '--fresh', dest='start_fresh', action='store_true', default=start_fresh, help= 'Start with fresh experiment, clears all previous results (Default: {})' .format(start_fresh)) parser.add_argument( '--no-cuda', dest='use_cuda', action='store_false', default=use_cuda, help='Always disables GPU use (Default: use when available)') args = parser.parse_args() if not use_cuda: logger.warning('CUDA is not available in the current configuration!!!') if not args.use_cuda: logger.warning('CUDA is disabled!!!') # run experiment given arguments run_experiment(args.experiment_tags, args.data_dir, args.results_dir, start_fresh=args.start_fresh, experiments_file=args.experiments_file, use_cuda=args.use_cuda, workers=args.workers)
logger.warning('CUDA is not available in the current configuration!!!') if not args.use_cuda: logger.warning('CUDA is disabled!!!') # run experiment given arguments run_experiment( args.experiment_tags, args.data_dir, args.results_dir, start_fresh=args.start_fresh, experiments_file=args.experiments_file, use_cuda=args.use_cuda, workers=args.workers) if __name__ == '__main__': # pragma: no cover config_fname = Config.get_filename() if not os.path.exists(config_fname) or not 'data_dir' in Config() or not 'results_dir' in Config(): print('The configuration file was not set correctly.\n') print('Please create a configuration file (json) at:\n {}\n'.format(config_fname)) print('The configuration file should be formatted as follows:\n\n' '{\n' ' "data_dir": "/home/user/data",\n' ' "results_dir": "/home/user/experiments"\n' '}\n') print('data_dir : location for storing the input training datasets') print('results_dir : location for storing the experiment files during training') else: main(data_dir=Config()['data_dir'], results_dir=Config()['results_dir'])
default=start_fresh, help= 'Start with fresh experiment, clears all previous results (Default: {})' .format(start_fresh)) parser.add_argument( '--no-cuda', dest='use_cuda', action='store_false', default=use_cuda, help='Always disables GPU use (Default: use when available)') args = parser.parse_args() if not use_cuda: logger.warning('CUDA is not available in the current configuration!!!') if not args.use_cuda: logger.warning('CUDA is disabled!!!') # run experiment given arguments run_experiment(args.experiment_tags, args.data_dir, args.results_dir, start_fresh=args.start_fresh, experiments_file=args.experiments_file, use_cuda=args.use_cuda, workers=args.workers) if __name__ == '__main__': # pragma: no cover main(data_dir=Config()['data_dir'], results_dir=Config()['results_dir'])
def test_load_experiment_config(): cfg_fname = os.path.join(Config.get_dir(), 'experiments.json') memcnn.experiment.factory.load_experiment_config(cfg_fname, ['cifar10', 'resnet110'])
def test_config_get_dir(self): self.assertEqual(Config.get_dir(), os.path.dirname(memcnn.config.__file__))
def test_config_get_filename(self): self.assertEqual( Config.get_filename(), os.path.join(os.path.dirname(memcnn.config.__file__), "config.json"))
def get_filename(): return os.path.join(Config.get_dir(), "config.json.example")