コード例 #1
0
def main():

    config = get_args()

    if config.load_model is not None:
        model, features, target_feature = load_model(config)
        data_loader = DataLoader(config, split=False, pretrained=True)
        data_loader.setup(features, target_feature)
        evaluator = Evaluator(config)

        evaluator.evaluate_pretrianed(model, data_loader, target_feature)
        
        exit(0)

    if config.load_checkpoint:
        auc, acc, pred, classes, completed = load_checkpoint(config)

    data_loader = DataLoader(config, split=not config.active_features)
    evaluator = Evaluator(config)
    trainer = Trainer(config, data_loader, evaluator)

    if config.load_checkpoint:
        evaluator.set_checkpoint(auc, acc, pred, classes)
        trainer.set_completed(completed)

    trainer.train()

    if not config.active_features:
        print(f"AUC ({config.evaluation_mode}): {evaluator.get_auc()}")
        print(f"Accuracy ({config.evaluation_mode}): {evaluator.get_accuracy()}")

        evaluator.save(data_loader.getFeatures())

    display_runtime(config)
コード例 #2
0
                            shuffle=True,
                            num_workers=cpu_count())
    criterion = EvaluatorLoss().cuda()
    optimizer = optim.Adam(evaluator.parameters(), lr=4e-4, weight_decay=1e-5)
    epochs = 5
    print(f"number of batches = {len(dataset) // batch_size}")
    print("Begin Training")
    for epoch in range(epochs):
        start = time.time()
        for i, (images, captions, other_captions) in enumerate(dataloader, 0):
            print(f"Batch = {i + 1}")
            images, captions, other_captions = Variable(images).cuda(
            ), Variable(captions).cuda(), Variable(other_captions).cuda()
            temp = images.shape[0]
            captions = pack_padded_sequence(captions, [18] * temp, True)
            other_captions = pack_padded_sequence(other_captions, [18] * temp,
                                                  True)
            generator_outputs = generator.sample_with_embedding(images)
            evaluator_outputs = evaluator(images, captions)
            generator_outputs = evaluator(images, generator_outputs)
            other_outputs = evaluator(images, other_captions)
            loss = criterion(evaluator_outputs, generator_outputs,
                             other_outputs)
            loss.backward()
            optimizer.step()
            end = time.time()
            print(f"Batch Time {end - start}")
            start = end
        print(f"Epoch = {epoch + 1}")
        evaluator.save()