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.

def generate_blob_names(self):
        """
        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.
        """
        # 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)