コード例 #1
0
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
コード例 #2
0
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)
コード例 #3
0
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)