coremltools/converters/keras/_topology.py [625:668]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            embedded_layer_list = embedded_graph.layer_list
            new_layer_list = []
            for embedded_layer_name in embedded_layer_list:
                new_layer_name = embedded_model + "_" + embedded_layer_name
                new_layer_list.append(new_layer_name)
                self.keras_layer_map[new_layer_name] = embedded_graph.keras_layer_map[
                    embedded_layer_name
                ]
                # add edge [embed_layer -> its succ]
                embedded_successors = embedded_graph.get_successors(embedded_layer_name)
                for embed_succ_name in embedded_successors:
                    new_embed_succ_name = embedded_model + "_" + embed_succ_name
                    self._add_edge(new_layer_name, new_embed_succ_name)
                # add edge [pred -> embed_layer]
                embedded_predecessors = embedded_graph.get_predecessors(
                    embedded_layer_name
                )
                for embed_pred_name in embedded_predecessors:
                    new_embed_pred_name = embedded_model + "_" + embed_pred_name
                    self._add_edge(new_embed_pred_name, new_layer_name)

            self.layer_list[idx + 1 : idx + 1] = new_layer_list
            # replace input / output edges to the model with input/output edges of the embedded layers
            predecessors = self.get_predecessors(embedded_model)
            embedded_inputs = embedded_graph.get_input_layers()
            for i, pred in enumerate(predecessors):
                embed_input = embedded_inputs[i]
                new_embed_input = embedded_model + "_" + embed_input
                self._add_edge(pred, new_embed_input)

            embedded_outputs = embedded_graph.get_output_layers()
            successors = self.get_successors(embedded_model)
            for i, succ in enumerate(successors):
                embed_output = embedded_outputs[i]
                new_embed_output = embedded_model + "_" + embed_output

                self._add_edge(new_embed_output, succ)

            # clear up the embedded model
            self._remove_layer(embedded_model)
            idx = self._get_first_embedded_model()

        self.make_input_layers()
        self.make_output_layers()
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



coremltools/converters/keras/_topology2.py [742:786]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            embedded_layer_list = embedded_graph.layer_list
            new_layer_list = []
            for embedded_layer_name in embedded_layer_list:
                new_layer_name = embedded_model + "_" + embedded_layer_name
                new_layer_list.append(new_layer_name)
                self.keras_layer_map[new_layer_name] = embedded_graph.keras_layer_map[
                    embedded_layer_name
                ]
                # add edge [embed_layer -> its succ]
                embedded_successors = embedded_graph.get_successors(embedded_layer_name)
                for embed_succ_name in embedded_successors:
                    new_embed_succ_name = embedded_model + "_" + embed_succ_name
                    self._add_edge(new_layer_name, new_embed_succ_name)
                # add edge [pred -> embed_layer]
                embedded_predecessors = embedded_graph.get_predecessors(
                    embedded_layer_name
                )
                for embed_pred_name in embedded_predecessors:
                    new_embed_pred_name = embedded_model + "_" + embed_pred_name
                    self._add_edge(new_embed_pred_name, new_layer_name)

            self.layer_list[idx + 1 : idx + 1] = new_layer_list
            # replace input / output edges to the model with input/output edges of the embedded layers
            predecessors = self.get_predecessors(embedded_model)
            embedded_inputs = embedded_graph.get_input_layers()
            for i, pred in enumerate(predecessors):
                embed_input = embedded_inputs[i]
                new_embed_input = embedded_model + "_" + embed_input
                self._add_edge(pred, new_embed_input)

            embedded_outputs = embedded_graph.get_output_layers()
            successors = self.get_successors(embedded_model)
            for i, succ in enumerate(successors):
                embed_output = embedded_outputs[i]
                new_embed_output = embedded_model + "_" + embed_output

                self._add_edge(new_embed_output, succ)

            # clear up the embedded model
            self._remove_layer(embedded_model)
            idx = self._get_first_embedded_model()

        # tag input layers and and output layers
        self.make_input_layers()
        self.make_output_layers()
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



