code: def deepfool_batch(sess,
                     x,
                     pred,
                     logits,
                     grads,
                     X,
                     nb_candidate,
                     overshoot,
                     max_iter,
                     clip_min,
                     clip_max,
                     nb_classes,
                     feed=None):
    
    X_adv = deepfool_attack(
        sess,
        x,
        pred,
        logits,
        grads,
        X,
        nb_candidate,
        overshoot,
        max_iter,
        clip_min,
        clip_max,
        feed=feed)
  
    return np.asarray(X_adv, dtype=np_dtype)
docs: Applies DeepFool to a batch of inputs
    :param sess: TF session
    :param x: The input placeholder
    :param pred: The model's sorted symbolic output of logits, only the top
                 nb_candidate classes are contained
    :param logits: The model's unnormalized output tensor (the input to
                   the softmax layer)
    :param grads: Symbolic gradients of the top nb_candidate classes, procuded
                  from gradient_graph
    :param X: Numpy array with sample inputs
    :param nb_candidate: The number of classes to test against, i.e.,
                         deepfool only consider nb_candidate classes when
                         attacking(thus accelerate speed). The nb_candidate
                         classes are chosen according to the prediction
                         confidence during implementation.
    :param overshoot: A termination criterion to prevent vanishing updates
    :param max_iter: Maximum number of iteration for DeepFool
    :param clip_min: Minimum value for components of the example returned
    :param clip_max: Maximum value for components of the example returned
    :param nb_classes: Number of model output classes
    :return: Adversarial examples