code: def generate_blob_names(self):
          
          # generate blob names that represent edges in blob_name_map
          # because of the InputLayers, input blobs are also generated.
  
          # Generate each layer's input / output blob names
          for layer in self.layer_list:
              keras_layer = self.keras_layer_map[layer]
              # no need to generate InputLayers' blobs
              if not isinstance(keras_layer, _keras.engine.topology.InputLayer):
                  # layer's input blob names depend on predecessors
                  preds = self.get_predecessors(layer)
                  for pred in preds:
                      blob_name = pred + '_output'
                      _insert_to_dict(self.layers_inputs, layer, blob_name)
                  # layer's output blob is just named after itself
                  blob_name = layer + '_output'
                  _insert_to_dict(self.layers_outputs, layer, blob_name)
docs: Generate blob names for each one of the edge.  At this time, Keras does not
          support "fork" operation (a layer with more than 1 blob output). So we just
          use names of the src layer to identify a blob.  We also assume all neural
          networks are singly-connected graphs - which should be the case.