예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
        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'])
예제 #4
0
        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'])
예제 #5
0
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'])
예제 #6
0
 def test_config_get_dir(self):
     self.assertEqual(Config.get_dir(),
                      os.path.dirname(memcnn.config.__file__))
예제 #7
0
 def test_config_get_filename(self):
     self.assertEqual(
         Config.get_filename(),
         os.path.join(os.path.dirname(memcnn.config.__file__),
                      "config.json"))
예제 #8
0
 def get_filename():
     return os.path.join(Config.get_dir(), "config.json.example")