class_docstr: L1 Momentum Iterative Fast Gradient Sign Method (MI-FGSM) [#Dong18]
  
  Args:
      momentum : Momentum factor for accumulation grad
      rel_stepsize : Stepsize relative to epsilon
      abs_stepsize : If given, it takes precedence over rel_stepsize.
      steps : Number of update steps to perform.
      random_start : Whether the perturbation is initialized randomly or starts at zero.
class_docstr_tok: ["L1","Momentum","Iterative","Fast","Gradient","Sign","Method","(","MI-FGSM",")","[","#","Dong18","]","Args",":","momentum",":","Momentum","factor","for","accumulation","grad","rel_stepsize",":","Stepsize","relative","to","epsilon","abs_stepsize",":","If","given",",","it","takes","precedence","over","rel_stepsize",".","steps",":","Number","of","update","steps","to","perform",".","random_start",":","Whether","the","perturbation","is","initialized","randomly","or","starts","at","zero","."]
code: def get_optimizer(self, x: ep.Tensor, stepsize: float) -> Optimizer:
      return GDMOptimizer(
          x, stepsize, self.momentum, partial(normalize_lp_norms, p=1)
      )
  
imports: from functools import partial
  from typing import Callable, Optional
  from foolbox.attacks.gradient_descent_base import normalize_lp_norms
  from .basic_iterative_method import Optimizer, L1BasicIterativeAttack, L2BasicIterativeAttack, LinfBasicIterativeAttack
  import eagerpy
label_desc: Use image node_id 2 for calling the L1MomentumIterativeFastGradientMethod obj's underlying member method code with example usage: obj.get_optimizer(x, stepsize) and returns: GDMOptimizer