Невозможно сгенерировать состязательные примеры для критерия целевого класса в Foolbox - PullRequest
0 голосов
/ 04 июля 2019

Я пытаюсь атаковать коннет, используя целевой fgsm из модуля foolbox. Нецелевая атака прекрасно работает в коде, но изменение criterion атаки на целевую выдает ошибку - Error when checking input: expected conv2d_2_input to have 4 dimensions, but got array with shape (1, 1)

Однако код отлично работает по критерию Misclassification()

Модель - `

model = tf.keras.models.Sequential()

model.add(tf.keras.layers.Conv2D(32, kernel_size=(5, 5),
                                 activation='relu', input_shape=(28, 28, 1)))
model.add(tf.keras.layers.MaxPooling2D(pool_size=(2, 2)))
model.add(tf.keras.layers.Conv2D(64, kernel_size=(5, 5), activation='relu'))
model.add(tf.keras.layers.MaxPooling2D(pool_size=(2, 2)))
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(10, activation='softmax'))
# compile model using accuracy as a measure of model performance
model.compile(optimizer='adam', loss='categorical_crossentropy',
              metrics=['accuracy'])

`

Код Foolbox- `

target_class = 0
attack = foolbox.attacks.FGSM(fmodel, criterion=Misclassification())
adversarial = np.array([attack(images[0], label=labels[0])])

model_predictions = model.predict(adversarial)
print('real label: {}, label prediction; {}'.format(
    labels[0], np.argmax(model_predictions)))

`

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...