def load_model(cls, ensemble_path): """Load up ensembled models given a folder location.""" json_file = "{}_metadata.json".format( os.path.join(ensemble_path, os.path.basename(ensemble_path))) with open(json_file, 'r') as file: config = json.load(file) networks = [] for model_file in sorted(os.listdir(ensemble_path)): if model_file.endswith('.network'): file = os.path.join(ensemble_path, model_file) networks += [Network.load_model(file)] snap = Snapshot(name='snap1', template_network=networks[0], n_snapshots=config[ensemble_path]['n_snapshots']) snap.networks = networks return snap
if __name__ == "__main__": args = parse_args() update_config(cfg, args) test_set = eval(cfg.DATASET.DATASET)("valid", cfg) num_classes = test_set.get_num_classes() device = torch.device("cpu" if cfg.CPU_MODE else "cuda") model = Network(cfg, mode="test", num_classes=num_classes) model_dir = os.path.join(cfg.OUTPUT_DIR, cfg.NAME, "models") model_file = cfg.TEST.MODEL_FILE if "/" in model_file: model_path = model_file else: model_path = os.path.join(model_dir, model_file) model.load_model(model_path) if cfg.CPU_MODE: model = model.to(device) else: model = torch.nn.DataParallel(model).cuda() testLoader = DataLoader( test_set, batch_size=cfg.TEST.BATCH_SIZE, shuffle=False, num_workers=cfg.TEST.NUM_WORKERS, pin_memory=cfg.PIN_MEMORY, ) valid_model(testLoader, model, cfg, device, num_classes)