无法为Foolbox中的目标类标准生成对抗性示例

2024-05-29 04:45:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图使用来自傻瓜箱模块的目标fgsm攻击convnet。非目标攻击在代码中运行良好,但将攻击的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'])

`

傻瓜箱代码- `你知道吗

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)))

`


Tags: 代码add目标inputsizemodellayerstf

热门问题