class_docstr: Parameter scaling for GenAttack.  Decrease mutation rate and range when
  search is detected to be stuck.
  
  For more details, see section 4.1.2 of https://arxiv.org/abs/1805.11090.
code: def __init__(
      self,
      x,
      alpha_init=0.4,
      rho_init=0.5,
      decay=0.9,
      rho_min=0.1,
      alpha_min=0.15,
  ):
      n_batch = x.shape[0]
  
      self.n_batch = n_batch
      self.crit = 1e-5
  
      self.best_val = torch.zeros(n_batch).to(x.device)
      self.num_i = torch.zeros(n_batch).to(x.device)
      self.num_plateaus = torch.zeros(n_batch).to(x.device)
  
      self.rho_min = rho_min * torch.ones(n_batch).to(x.device)
      self.alpha_min = alpha_min * torch.ones(n_batch).to(x.device)
  
      self.zeros = torch.zeros_like(self.num_i)
  
      self.alpha_init = alpha_init
      self.rho_init = rho_init
      self.decay = decay
  
      self.alpha = alpha_init * torch.ones(n_batch).to(x.device)
      self.rho = rho_init * torch.ones(n_batch).to(x.device)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from __future__ import unicode_literals
  from typing import Optional
  from math import inf
  import torch
  import torch.nn.functional
  from advertorch.attacks.base import Attack
  from advertorch.attacks.base import LabelMixin
  from .utils import _check_param, _flatten, _make_projector
label_desc: Use image node_id 1 to create a new GenAttackScheduler object  with example: obj = GenAttackScheduler(x, alpha_init, rho_init, decay, rho_min, alpha_min)