def main(): args = parse_args() exp = Experiment(args.exp_name, args, mode=args.mode) if args.cfg is None: cfg_path = exp.cfg_path else: cfg_path = args.cfg cfg = Config(cfg_path) exp.set_cfg(cfg, override=False) device = torch.device('cpu') if not torch.cuda.is_available() or args.cpu else torch.device('cuda') runner = Runner(cfg, exp, device, view=args.view, resume=args.resume, deterministic=args.deterministic) if args.mode == 'train': try: runner.train() except KeyboardInterrupt: logging.info('Training interrupted.') runner.eval(epoch=args.epoch or exp.get_last_checkpoint_epoch(), save_predictions=args.save_predictions)