class_docstr: LBFGS is the first adversarial attack for convolutional neural networks,
  and is a target & iterative attack.
  Paper link: "https://arxiv.org/pdf/1312.6199.pdf"
  :param model: cleverhans.model.Model
  :param sess: tf.Session
  :param dtypestr: dtype of the data
  :param kwargs: passed through to super constructor
code: def __init__(self, model, sess, dtypestr="float32", **kwargs):
      if not isinstance(model, Model):
          wrapper_warning()
          model = CallableModelWrapper(model, "probs")
  
      super(LBFGS, self).__init__(model, sess, dtypestr, **kwargs)
  
      self.feedable_kwargs = ("y_target",)
      self.structural_kwargs = [
          "batch_size",
          "binary_search_steps",
          "max_iterations",
          "initial_const",
          "clip_min",
          "clip_max",
      ]
  
file_path: cleverhans/cleverhans_v3.1.0/cleverhans/attacks/lbfgs.py
imports: import numpy
  import tensorflow
  from cleverhans.attacks.attack import Attack
  from cleverhans.compat import reduce_sum, softmax_cross_entropy_with_logits
  from cleverhans.model import CallableModelWrapper, Model, wrapper_warning
  from cleverhans import utils
  from cleverhans import utils_tf
label_desc: Use image node_id 1 to create a new LBFGS object from inherited base classes: Attack with example: obj = LBFGS(model, sess, dtypestr)