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') ]
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(( 'lpips_alexnet',