class_docstr: This class evaluates a model against multiple attacks.
class_docstr_tok: ["This","class","evaluates","a","model","against","multiple","attacks","."]
docstr: Run the evaluation on multiple attacks.
docstr_tok: ["Run","the","evaluation","on","multiple","attacks","."]
code: def eval_multi(self, inc_epoch=True):
      """
      Run the evaluation on multiple attacks.
      """
      sess = self.sess
      preds = self.preds
      x = self.x_pre
      y = self.y
      X_train = self.X_train
      Y_train = self.Y_train
      X_test = self.X_test
      Y_test = self.Y_test
      writer = self.writer
  
      self.summary = tf.Summary()
      report = {}
  
      # Evaluate on train set
      subsample_factor = 100
      X_train_subsampled = X_train[::subsample_factor]
      Y_train_subsampled = Y_train[::subsample_factor]
      acc_train = model_eval(
          sess,
          x,
          y,
          preds,
          X_train_subsampled,
          Y_train_subsampled,
          args=self.eval_params,
      )
      self.log_value(
          "train_accuracy_subsampled",
          acc_train,
          "Clean accuracy, subsampled train",
      )
      report["train"] = acc_train
  
      # Evaluate on the test set
      acc = model_eval(
          sess, x, y, preds, X_test, Y_test, args=self.eval_params
      )
      self.log_value(
          "test_accuracy_natural", acc, "Clean accuracy, natural test"
      )
      report["test"] = acc
  
      # Evaluate against adversarial attacks
      if self.epoch % self.hparams.eval_iters == 0:
          for att_type in self.attack_type_test:
              _, preds_adv = self.attacks[att_type]
              acc = self.eval_advs(
                  x, y, preds_adv, X_test, Y_test, att_type
              )
              report[att_type] = acc
  
      if self.writer:
          writer.add_summary(self.summary, self.epoch)
  
      # Add examples of adversarial examples to the summary
      if (
          self.writer
          and self.epoch % 20 == 0
          and self.sum_op is not None
      ):
          sm_val = self.sess.run(
              self.sum_op,
              feed_dict={
                  x: X_test[: self.batch_size],
                  y: Y_test[: self.batch_size],
              },
          )
          if self.writer:
              writer.add_summary(sm_val)
  
      self.epoch += 1 if inc_epoch else 0
  
      return report
  
file_path: cleverhans/cleverhans_v3.1.0/examples/multigpu_advtrain/evaluator.py
imports: import logging
  import tensorflow
  from cleverhans.utils_tf import model_eval
  from cleverhans.attacks import FastGradientMethod
  from cleverhans.attacks import MadryEtAl
  from attacks_multigpu import MadryEtAlMultiGPU
label_desc: Use image node_id 4 for calling the Evaluator obj's underlying member method code with example usage: obj.eval_multi(inc_epoch) and returns: report