在 Cleverhans 示例中:cleverhans/examples/test_imagenet_attacks.py
他们使用 sess=None 实施 SPSA 攻击。
但是在 Cleverhans 攻击 repo 中,有很多方法不能将 sess 设置为 None,例如 CW、DeepFool、BFGS...
如何使用 sess 更改代码并使用这些方法生成对抗性示例?
链接:https ://github.com/tensorflow/cleverhans/blob/master/examples/test_imagenet_attacks.py
ImagNet 上 SPSA 攻击的代码片段:
attack = SPSA(model)
x_adv = attack.generate(x_input, ...)
logits = model.get_logits(x_adv)
acc = _top_1_accuracy(logits, y_label)
saver = tf.train.Saver(slim.get_model_variables())
session_creator = tf.train.ChiefSessionCreator(...)
with tf.train.MonitoredSession(session_creator) as sess:
for i in xrange(num_images):
feed_dict_i = {x_input, y_label}
acc_val = sess.run(acc, feed_dict=feed_dict_i)
但是对于DeepFool,我们不能写attack = SPSA(model),因为它必须是attack = DeepFool(model, sess)。