def test(args, ckpt_file): batch_size = args["batch_size"] testloader = DataLoader(test_dataset, batch_size=batch_size, shuffle=False, collate_fn=generate_batch) predictions, targets = [], [] net = TextSentiment(VOCAB_SIZE, EMBED_DIM, NUN_CLASS).to(device) ckpt = torch.load(os.path.join(args["EXPT_DIR"], ckpt_file)) net.load_state_dict(ckpt["model"]) net.eval() correct, total = 0, 0 with torch.no_grad(): for data in tqdm(testloader, desc="Testing"): text, offsets, cls = data text, offsets, cls = text.to(device), offsets.to(device), cls.to( device) outputs = net(text, offsets) _, predicted = torch.max(outputs.data, 1) predictions.extend(predicted.cpu().numpy().tolist()) targets.extend(cls.cpu().numpy().tolist()) total += cls.size(0) correct += (predicted == cls).sum().item() return {"predictions": predictions, "labels": targets}
def infer(args, unlabeled, ckpt_file): unlabeled = Subset(train_dataset, unlabeled) unlabeled_loader = torch.utils.data.DataLoader( unlabeled, batch_size=args["batch_size"], shuffle=False, num_workers=2, collate_fn=generate_batch) net = TextSentiment(VOCAB_SIZE, EMBED_DIM, NUN_CLASS).to(device) ckpt = torch.load(os.path.join(args["EXPT_DIR"], ckpt_file)) net.load_state_dict(ckpt["model"]) net.eval() correct, total = 0, 0 outputs_fin = {} with torch.no_grad(): for i, data in tqdm(enumerate(unlabeled_loader), desc="Inferring"): text, offsets, cls = data text, offsets, cls = text.to(device), offsets.to(device), cls.to( device) outputs = net(text, offsets) _, predicted = torch.max(outputs.data, 1) total += cls.size(0) correct += (predicted == cls).sum().item() for j in range(len(outputs)): outputs_fin[j] = {} outputs_fin[j]["prediction"] = predicted[j].item() outputs_fin[j]["pre_softmax"] = outputs[j].cpu().numpy() return {"outputs": outputs_fin}