Как генерировать целевые атаки с быстрым градиентом с помощью набора инструментов IBM для обеспечения устойчивости? У меня есть следующий код, но он просто генерирует нецелевые атаки:
# Number of adversarial examples
ADVERSARIAL_NUMBER = 1
# Load classifier from file
classifier = tf.keras.models.load_model('classifier.h5')
# Define loss function
loss_object = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
# Wrapper for tensorflow model
classifier_wrapper = TensorFlowV2Classifier(model=classifier, nb_classes=NUMBER_OF_LABELS, loss_object=loss_object,
input_shape=(IMG_HEIGHT, IMG_WIDTH, 1), clip_values=(0, 1))
# Generate Adversarial Examples
attack = FastGradientMethod(classifier=classifier_wrapper, eps=0.30, targeted=True)
x_test_adv = attack.generate(x=test_data[0:ADVERSARIAL_NUMBER].reshape(-1,IMG_HEIGHT,IMG_WIDTH,1),y = [1])
# Attack the classifier with these adversarial examples
predictions = classifier_wrapper.predict(x_test_adv)
# Print Results
print("Original Labels:\t", test_labels[0:ADVERSARIAL_NUMBER])
print("Manipulated Labels:\t", np.argmax(predictions, axis=1))