class_docstr: "Iterative Least-likely Class Method (ILCM)" extends "BIM" to support
  targeted attack.
  "The Basic Iterative Method (BIM)" is to extend "FSGM". "BIM" iteratively
  take multiple small steps while adjusting the direction after each step.
  
  Paper link: https://arxiv.org/abs/1607.02533
class_docstr_tok: ["``","Iterative","Least-likely","Class","Method","(","ILCM",")","''","extends","``","BIM","''","to","support","targeted","attack",".","``","The","Basic","Iterative","Method","(","BIM",")","''","is","to","extend","``","FSGM","''",".","``","BIM","''","iteratively","take","multiple","small","steps","while","adjusting","the","direction","after","each","step",".","Paper","link",":","https",":","\/\/arxiv.org\/abs\/1607.02533"]
code: def _apply(
      self,
      adversary,
      epsilons=0.01,
      epsilons_max=0.5,
      steps=1000,
      epsilon_steps=1000,
  ):
      return GradientMethodAttack._apply(
          self,
          adversary=adversary,
          norm_ord=np.inf,
          epsilons=epsilons,
          epsilons_max=epsilons_max,
          steps=steps,
          epsilon_steps=epsilon_steps,
      )
  
imports: from __future__ import division
  from builtins import range
  import logging
  from collections import Iterable
  import numpy
  from .base import Attack
  from functools import reduce
label_desc: Use image node_id 1 for calling the IterativeLeastLikelyClassMethodAttack obj's underlying member method code with example usage: obj._apply(adversary, epsilons, epsilons_max, steps, epsilon_steps) and returns: GradientMethodAttack