code: def generate_many_neural_networks(
      nn_type, num_nns=200, initial_nns=None, nn_constraint_checker=None
  ):
      """Generates a large number of MLPs."""
      if initial_nns is None:
          if nn_type == "cnn":
              initial_nns = generate_cnn_architectures()
          elif nn_type == "mlp-reg":
              initial_nns = generate_mlp_architectures("reg")
          elif nn_type == "mlp-class":
              initial_nns = generate_mlp_architectures("class")
          else:
              raise ValueError("Unknown nn_type: %s." % (nn_type))
      num_steps_probs = np.array([0.5, 0.25, 0.125, 0.075, 0.05])
      num_steps_probs = num_steps_probs / num_steps_probs.sum()
      num_iters = 5
      num_nns_per_iter = int(num_nns / float(num_iters))
      # Get modifier
      modifier = NNModifier(nn_constraint_checker)
      curr_nns = initial_nns
      ret = [elem for elem in initial_nns]
      while len(ret) <= num_nns:
          curr_nns = modifier(
              curr_nns, num_nns_per_iter, num_steps_probs
          )
          ret.extend(curr_nns)
      np.random.shuffle(ret)
      return ret[:num_nns]
  
imports: import numpy
  from scipy.sparse import dok_matrix
  from .neural_network import ConvNeuralNetwork, MultiLayerPerceptron, get_cnn_layer_labels, get_mlp_layer_labels, is_a_conv_layer_label
  from .nn_modifiers import NNModifier
  from ..utils.general_utils import get_dok_mat_with_set_coords
label_desc: Use image node_id 16 for calling a global function with example usage: generate_many_neural_networks(nn_type, num_nns, initial_nns, nn_constraint_checker) and returns: ret