Beispiel #1
0
def model_eval(args):
    device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
    print('Using device:', device)

    # load the model
    model_config_args = load_configuration(args.directory,
                                           args.config_file_name, device)
    model = DenseNet(model_config_args)
    model_state_dict = torch.load('{:s}/{:s}'.format(
        args.directory, args.state_dict_file_name),
                                  map_location=device)
    model.load_state_dict(model_state_dict)

    # get performance
    trainloader, validateloader, testloader, classes = load_data(args.bsize)
    eval_result = {}

    eval_result['parameter_size'] = get_parameter_count(model)
    eval_result['train_accuracy'] = test_model(model, trainloader, device,
                                               args.one_batch)
    eval_result['validate_accuracy'] = test_model(model, validateloader,
                                                  device, args.one_batch)
    eval_result['test_accuracy'] = test_model(model, testloader, device,
                                              args.one_batch)

    print(eval_result)
    f = open('{:s}/{:s}'.format(args.directory, args.save_file_name), 'w')
    f.write(json.dumps(eval_result))
    f.close()
Beispiel #2
0
best_acc = 0

start_epoch = args.start_epoch

if not os.path.isdir(args.save_path):
    mkdir_p(args.save_path)

title = "CIFAR-100"
if args.resume:
    print("==> Resuming from checkpoint..")
    assert os.path.isfile(args.resume), "Error: no checkpoint directory found !!!"
    args.save_path = os.path.dirname(args.resume)
    checkpoint = torch.load(args.resume)
    best_acc = checkpoint["best_acc"]
    start_epoch = checkpoint["epoch"]
    model.load_state_dict(checkpoint["state_dict"])
    optimizer.load_state_dict(checkpoint["optimizer"])
    logger = Logger(os.path.join(args.save_path, "log.txt"), title=title, resume=True)
else:
    logger = Logger(os.path.join(args.save_path, "log.txt"), title=title)
    logger.set_names(
        ["Learning Rate", "Train Loss", "Valid Loss", "Train Acc.", "Valid Acc."]
    )


if args.evaluate:
    print("\nEvaluation only")
    test_loss, test_acc = test(testLoader, model, criterion, start_epoch, device)
    print(" Test Loss: %0.8f, Test Acc: %.3f" % (test_loss, test_acc))
    exit()