Esempio n. 1
0
            if args.lr_schedule is None:
                args.lr_schedule = '30,60,80'
            if args.num_epochs is None:
                args.num_epochs = 90

    torch.manual_seed(args.seed)
    np.random.seed(args.seed)
    random.seed(args.seed)

    dataset, model = get_dataset_model(args)
    if isinstance(model, FeatureModel):
        model.allow_train()
    if torch.cuda.is_available():
        model.cuda()
    vae = get_vae_model(args.vae_dir, 32, 2048)
    l2_distance = L2Distance()
    linf_distance = LinfDistance()
    l2_distance.cuda()
    linf_distance.cuda()

    train_loader, val_loader = dataset.make_loaders(
        workers=4, batch_size=args.batch_size)

    attacks = [eval(attack_str) for attack_str in args.attack]
    validation_attacks = [
        NoAttack(),
        LinfAttack(model, dataset_name=args.dataset,
                   num_iterations=VAL_ITERS),
        L2Attack(model, dataset_name=args.dataset,
                 num_iterations=VAL_ITERS),
    #    CIAttack2(model, vae, num_iterations=100, norm='linf',eps_max=8/255, loss='margin')
Esempio n. 2
0
                        help='number of batches (default entire dataset)')
    parser.add_argument('--per_example',
                        action='store_true',
                        default=False,
                        help='output per-example accuracy')
    parser.add_argument('--output', type=str, help='output CSV')
    parser.add_argument('attacks',
                        metavar='attack',
                        type=str,
                        nargs='+',
                        help='attack names')

    args = parser.parse_args()

    dist_models: List[Tuple[str, nn.Module]] = [
        ('l2', L2Distance()),
        ('linf', LinfDistance()),
        ('ssim', SSIM()),
    ]

    dataset, model = get_dataset_model(args)
    if not isinstance(model, FeatureModel):
        raise TypeError('model must be a FeatureModel')
    dist_models.append(('lpips_self', LPIPSDistance(model)))

    alexnet_model_name: Literal['alexnet_cifar', 'alexnet']
    if args.dataset.startswith('cifar'):
        alexnet_model_name = 'alexnet_cifar'
    else:
        alexnet_model_name = 'alexnet'
    dist_models.append((