def load_best_model(best_model_info, device, config_str, model_type, model_name, load_filename=None): if load_filename is None: savename = best_model_info['savename'] split = savename.split('/') split[-1] = 'best_' + split[-1] load_filename = '/'.join(split) try: _iter = checkpoint['_iter'] except: _iter = checkpoint['_epoch'] print("Loaded checkpoint (trained for {} iterations)".format(_iter)) try: params = best_model_info[["momentum", "seed", "lr", "batch_size", "augmentation"]] except: params = best_model_info[["seed", "lr", "batch_size", "augmentation"]] params = params.to_dict() params_alt = {} for key, value in params.items(): if (type(value) == str): params_alt[key] = [eval(value)] else: params_alt[key] = [value] exp = Experiment(None, device, config_str, model_type, model_name, params_alt, None, None) model, criterion, optimizer = exp._get_model(best_model_info['seed'], params) model = nn.DataParallel(model) model.load_state_dict(checkpoint['state_dict']) model.to(device) return checkpoint, model, criterion,exp