class_docstr: RegularizedEvolutionTuner is tuner using Evolution NAS Tuner.
  See ``Regularized Evolution for Image Classifier Architecture Search`` for details.
  
  Parameters
  ---
  optimize_mode: str
      whether to maximize metric or not. default: 'maximize'
  population_size: int
      the maximum number of kept models
  sample_size: int
      the number of models chosen from population each time when evolution
code: def _mutate(self, key, individual):
      mutate_val = self.search_space[key]
      if mutate_val["_type"] == "layer_choice":
          idx = random.randint(0, len(mutate_val["_value"]) - 1)
          individual[key] = {
              "_value": mutate_val["_value"][idx],
              "_idx": idx,
          }
      elif mutate_val["_type"] == "input_choice":
          candidates = mutate_val["_value"]["candidates"]
          n_chosen = mutate_val["_value"]["n_chosen"]
          idxs = [
              random.randint(0, len(candidates) - 1)
              for _ in range(n_chosen)
          ]
          vals = [candidates[k] for k in idxs]
          individual[key] = {"_value": vals, "_idx": idxs}
      else:
          raise KeyError
  
imports: import copy
  import logging
  import random
  from collections import deque
  from schema import Schema, Optional
  import nni
  from nni.tuner import Tuner
  from nni import ClassArgsValidator
  from nni.utils import OptimizeMode, extract_scalar_reward
label_desc: Use image node_id 6 for calling the RegularizedEvolutionTuner obj's underlying member method code with example usage: obj._mutate(key, individual) without return types