首页 > 解决方案 > 如何使用 tensorflow sess 更改 Cleverhans 'test_imagenet_attacks.py'?

问题描述

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

标签: tensorflowcleverhans

解决方案


如果您想将会话传递给攻击对象,您可以在实例化它时这样做:

attack = SPSA(model, sess=sess)
attack = LBFGS(model, sess)

推荐阅读