Ejemplo n.º 1
0
def create_model(opt):
    arch = opt.arch
    if opt.data == 'cifar100':
        model, _ = inversefed.construct_model(arch,
                                              num_classes=100,
                                              num_channels=3)
    elif opt.data == 'FashionMinist':
        model, _ = inversefed.construct_model(arch,
                                              num_classes=10,
                                              num_channels=1)
    return model
        **setup)[:, None, None]
    ds = torch.as_tensor(
        getattr(inversefed.consts, f'{args.dataset.lower()}_std'),
        **setup)[:, None, None]

    if args.dataset == 'ImageNet':
        if args.model == 'ResNet152':
            model = torchvision.models.resnet152(pretrained=args.trained_model)
        elif args.model == 'ResNet50':
            model = torchvision.models.resnet50(pretrained=args.trained_model)
        else:
            model = torchvision.models.resnet18(pretrained=args.trained_model)
        model_seed = None
    else:
        model, model_seed = inversefed.construct_model(args.model,
                                                       num_classes=10,
                                                       num_channels=3)
    model.to(**setup)
    model.eval()

    # Sanity check: Validate model accuracy
    training_stats = defaultdict(list)
    # inversefed.training.training_routine.validate(model, loss_fn, validloader, defs, setup, training_stats)
    # name, format = loss_fn.metric()
    # print(f'Val loss is {training_stats["valid_losses"][-1]:6.4f}, Val {name}: {training_stats["valid_" + name][-1]:{format}}.')

    # Choose example images from the validation set or from third-party sources
    if args.num_images == 1:
        if args.target_id == -1:  # demo image
            # Specify PIL filter for lower pillow versions
            ground_truth = torch.as_tensor(