コード例 #1
0
    _, _, X_test, Y_test = get_data(dataset)
    num_samples = np.shape(X_test)[0]
    num_rand_samples = 1328
    random_samples = np.random.randint(0, num_samples, num_rand_samples)
    new_X_test = np.zeros((num_rand_samples, 1, 28, 28))
    for i, sample_no in enumerate(random_samples):
        new_X_test[i, 0, :, :] = (X_test[sample_no, :, :, 0])
    new_Y_test = Y_test[random_samples, :]

    f = open(os.path.join(args.log_dir, 'Random_Test_%s_.p' % (dataset)), 'w')
    pickle.dump({"adv_input": new_X_test, "adv_labels": new_Y_test}, f)
    f.close()
    if (args.attack == 'cw-l2' or args.attack == 'all'):
        #No softmax for Carlini attack
        pytorch_network = Net()
        pytorch_network.load_state_dict(torch.load(args_ckpt))
        pytorch_network.eval()
        model = Model(torch_model=pytorch_network, softmax=False)
        keras_network = model.model
        transfer.pytorch_to_keras(pytorch_network, model.model)
        pytorch_network.eval()
        model = model.model
        batch_size = 16
        craft_one_type(sess,
                       model,
                       new_X_test,
                       new_Y_test,
                       dataset,
                       'cw-l2',
                       batch_size,
コード例 #2
0
    list_noisy_names.append('noisy_' + advs)
    attack_file = os.path.join(args.adv_ex_dir,
                               'Noisy_%s_%s.p' % (dataset, advs))
    adv_loader = torch.utils.data.DataLoader(custom_datasets.Adv(
        filename=attack_file, transp=True),
                                             batch_size=args.batch_size,
                                             shuffle=False,
                                             **kwargs)
    list_noisy_loader.append(adv_loader)

from model import CW_Net as Net
#from small_model import Very_Small_Net as Net

print("Eval using model", Net)

model = Net()
print("Loading ckpt", args.ckpt)
model.load_state_dict(torch.load(args.ckpt))

if args.cuda:
    model.cuda()
model.eval()

print("Args:", args)

fixed_dxs = pickle.load(
    open(os.path.join(args.fingerprint_dir, "fp_inputs_dx.pkl"), "rb"))
fixed_dys = pickle.load(
    open(os.path.join(args.fingerprint_dir, "fp_outputs.pkl"), "rb"))

fp = Fingerprints()
コード例 #3
0
        fp_target[i, j, i] = 0.7

pickle.dump(fp_target, open(os.path.join(args.log_dir, "fp_outputs.pkl"),
                            "wb"))

fp_target = util.np2var(fp_target, args.cuda)

fp = Fingerprints()
fp.dxs = fp_dx
fp.dys = fp_target

#from model import Net
from model import CW_Net as Net
#from small_model import Very_Small_Net as Net

model = Net()
if args.cuda:
    model.cuda()

optimizer = optim.Adam(model.parameters(), lr=args.lr)

print("Args:", args)

for epoch in range(1, args.epochs + 1):
    if (epoch == 1):
        fp_train.test(epoch, args, model, test_loader, fp.dxs, fp.dys)
    fp_train.train(epoch, args, model, optimizer, train_loader, fp.dxs, fp.dys)
    fp_train.test(epoch, args, model, test_loader, fp.dxs, fp.dys)

    path = os.path.join(args.log_dir, "ckpt",
                        "state_dict-ep_{}.pth".format(epoch))