code: def parse_params(self,
                     layer=None,
                     eps=0.3,
                     eps_iter=0.05,
                     nb_iter=10,
                     ord=np.inf,
                     clip_min=None,
                     clip_max=None,
                     **kwargs):
      
  
      # Save attack-specific parameters
      self.layer = layer
      self.eps = eps
      self.eps_iter = eps_iter
      self.nb_iter = nb_iter
      self.ord = ord
      self.clip_min = clip_min
      self.clip_max = clip_max
  
      # Check if order of the norm is acceptable given current implementation
      if self.ord not in [np.inf, 1, 2]:
        raise ValueError("Norm order must be either np.inf, 1, or 2.")
      if len(kwargs.keys()) > 0:
        warnings.warn("kwargs is unused and will be removed on or after "
                      "2019-04-26.")
  
      return True
docs: Take in a dictionary of parameters and applies attack-specific checks
      before saving them as attributes.
  
      Attack-specific parameters:
  
      :param layer: (required str) name of the layer to target.
      :param eps: (optional float) maximum distortion of adversarial example
                  compared to original input
      :param eps_iter: (optional float) step size for each attack iteration
      :param nb_iter: (optional int) Number of attack iterations.
      :param ord: (optional) Order of the norm (mimics Numpy).
                  Possible values: np.inf, 1 or 2.
      :param clip_min: (optional float) Minimum input component value
      :param clip_max: (optional float) Maximum input component value