def test_iterative_saliency(art_warning, fix_get_mnist_subset, image_dl_estimator_for_attack): try: classifier = image_dl_estimator_for_attack(FastGradientMethod) expected_values_axis_1 = { "nb_perturbed_frames": ExpectedValue(np.asarray([10, 1, 2, 12, 16, 1, 2, 7, 4, 11, 5]), 2) } expected_values_axis_2 = { "nb_perturbed_frames": ExpectedValue(np.asarray([11, 1, 2, 6, 14, 2, 2, 13, 4, 8, 4]), 2) } attacker = FastGradientMethod(classifier, eps=0.3, batch_size=128) attack = FrameSaliencyAttack(classifier, attacker, "iterative_saliency") backend_check_adverse_frames(attack, fix_get_mnist_subset, expected_values_axis_1) # test with non-default frame index: attack = FrameSaliencyAttack(classifier, attacker, "iterative_saliency", frame_index=2) backend_check_adverse_frames(attack, fix_get_mnist_subset, expected_values_axis_2) except ARTTestException as e: art_warning(e)
def test_iterative_saliency(fix_get_mnist_subset, image_dl_estimator_for_attack): classifier_list = image_dl_estimator_for_attack(FastGradientMethod) # TODO this if statement must be removed once we have a classifier for both image and tabular data if classifier_list is None: logging.warning( "Couldn't perform this test because no classifier is defined") return expected_values_axis_1 = { "nb_perturbed_frames": ExpectedValue(np.asarray([10, 1, 2, 12, 16, 1, 2, 7, 4, 11, 5]), 2) } expected_values_axis_2 = { "nb_perturbed_frames": ExpectedValue(np.asarray([11, 1, 2, 6, 14, 2, 2, 13, 4, 8, 4]), 2) } for classifier in classifier_list: attacker = FastGradientMethod(classifier, eps=0.3, batch_size=128) attack = FrameSaliencyAttack(classifier, attacker, "iterative_saliency") backend_check_adverse_frames(attack, fix_get_mnist_subset, expected_values_axis_1) # test with non-default frame index: attack = FrameSaliencyAttack(classifier, attacker, "iterative_saliency", frame_index=2) backend_check_adverse_frames(attack, fix_get_mnist_subset, expected_values_axis_2)