def load_model(): ''' Loads a pre-trained model and settings used to generate it. ''' try: with open(f'{PATH_TO_MODEL}.json', 'r') as json_file: settings = json.load(json_file) model = NeuralNet(len(settings['all_labels'])) model.load_state_dict( torch.load(f'{PATH_TO_MODEL}.pth', map_location=torch.device('cpu'))) except: print('Could not locate a trained model.') sys.exit() model.eval() return model, settings
if (args.dataset == "train"): data_x, data_y = train_x, train_y elif (args.dataset == "test"): data_x, data_y = test_x, test_y elif (args.dataset == "valid"): data_x, data_y = valid_x, valid_y test_dataset = Dataset(root_dir, data_x, data_y, transforms=transform) test_generator = torch.utils.data.DataLoader(test_dataset, **params) print("Loaded dataloaders...") criterion = torch.nn.CrossEntropyLoss() model = NeuralNet(0.001, criterion, 64, 2) state_dict = torch.load(model_name) model.load_state_dict(state_dict) for parameter in model.parameters(): parameter.requires_grad = False if (use_cuda): model.cuda() model.eval() summary(model, (1, 64, 64)) print("Loaded model...") preds = [] labels = [] for local_batch, local_labels in tqdm(test_generator): labels.extend(local_labels.numpy().tolist()) local_batch, local_labels = local_batch.to(device), local_labels.to(device)
use_cuda = torch.cuda.is_available() device = torch.device("cuda:0" if use_cuda else "cpu") root_dir = os.path.join("data") classes_to_idx = { v: k for k, v in enumerate( open(os.path.join(root_dir, "classes.txt")).read().strip().split("\n")) } idx_to_classes = {v: k for k, v in classes_to_idx.items()} criterion = nn.BCELoss() model = NeuralNet(0.01, criterion, 256, len(classes_to_idx)) model.load_state_dict(torch.load(sys.argv[1])) if use_cuda: model.cuda() model.eval() id = random.choice(os.listdir(os.path.join(root_dir, "images"))).split(".")[0] data = torch.load(os.path.join(root_dir, "images", id + ".pt")) true_labels = torch.load(os.path.join(root_dir, "labels", id + ".pt")) diseases = [] for x in range(len(true_labels)): if (true_labels[x] == 1.0): diseases.append(idx_to_classes[x]) print(id) print(true_labels)