criterion = nn.CrossEntropyLoss() optimizer = optim.Adam(model.parameters(), lr=0.01) # Step 3: Create the ART classifier classifier = PyTorchClassifier( model=model, clip_values=(0, 1), loss=criterion, optimizer=optimizer, input_shape=(1, 28, 28), nb_classes=10, ) classifier.fit(x_train, y_train, batch_size=128, nb_epochs=5) predictions = classifier.predict(x_test) accuracy = np.sum( np.argmax(predictions, axis=1) == np.argmax(y_test, axis=1)) / len(y_test) print("Accuracy on benign test examples: {}%".format(accuracy * 100)) def calculate_l0(batch_original, batch_adversarial, dim): # image_original==x_test_adv matrix_bool = batch_original == batch_adversarial inverse_matrix = np.logical_not(matrix_bool) l0 = np.count_nonzero(inverse_matrix, axis=dim) return l0
optimizer = optim.Adam(model.parameters(), lr=0.01) # Step 3: Create the ART classifier classifier = PyTorchClassifier( model=model, clip_values=(0.0, 1.0), preprocessing=(cifar_mu, cifar_std), loss=criterion, optimizer=optimizer, input_shape=(3, 32, 32), nb_classes=10, ) # Step 4: Train the ART classifier classifier.fit(x_train, y_train, batch_size=64, nb_epochs=10) exp_time = time.strftime('%H_%M_%S') # torch.save(classifier.model.state_dict(), 'pth/{}.pth.tar'.format(exp_time)) # Step 5: Evaluate the ART classifier on benign test examples predictions = classifier.predict(x_test) accuracy = np.sum( np.argmax(predictions, axis=1) == np.argmax(y_test, axis=1)) / len(y_test) print("Accuracy on benign test examples: {}%".format(accuracy * 100)) # Step 6: Generate adversarial test examples attack = FastGradientMethod(estimator=classifier, eps=0.2) attack_pgd = ProjectedGradientDescent( classifier, norm=np.inf,