我正试图使用来自傻瓜箱模块的目标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)))
`
目前没有回答
相关问题 更多 >
编程相关推荐