class_docstr: L2 - Fast Adaptive Boundary Attack
  https://arxiv.org/abs/1907.02044
  
  :param predict:       forward pass function
  :param n_restarts:    number of random restarts
  :param n_iter:        number of iterations
  :param eps:           epsilon for the random restarts
  :param alpha_max:     alpha_max
  :param eta:           overshooting
  :param beta:          backward step
  :param device:        device to use ('cuda' or 'cpu')
code: def __init__(
      self,
      predict,
      n_restarts=1,
      n_iter=100,
      eps=None,
      alpha_max=0.1,
      eta=1.05,
      beta=0.9,
      loss_fn=None,
      verbose=False,
  ):
      norm = "L2"
      super(L2FABAttack, self).__init__(
          predict=predict,
          norm=norm,
          n_restarts=n_restarts,
          n_iter=n_iter,
          eps=eps,
          alpha_max=alpha_max,
          eta=eta,
          beta=beta,
          loss_fn=loss_fn,
          verbose=verbose,
      )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from __future__ import unicode_literals
  import torch
  import time
  from advertorch.utils import replicate_input
  from advertorch.attacks.utils import zero_gradients
  from .base import Attack
  from .base import LabelMixin
label_desc: Use image node_id 1 to create a new L2FABAttack object from inherited base classes: FABAttack with example: obj = L2FABAttack(predict, n_restarts, n_iter, eps, alpha_max, eta, beta, loss_fn, verbose)