def __extract_input_and_output_tensors_from_frozen_graph()

in src/neo_loader/helpers/tf_model_helper.py [0:0]


    def __extract_input_and_output_tensors_from_frozen_graph(self) -> None:
        # https://github.com/neo-ai/neo-ai-dlr/blob/master/python/dlr/tf_model.py#L37
        tf.reset_default_graph()
        graph = self.__get_graph_from_frozen_graph_model()
        input_tensors = OrderedDict()
        output_tensors = OrderedDict()

        for op in graph.get_operations():
            if op.type == 'Placeholder' and op.inputs.__len__() == 0 and op.outputs.__len__() == 1:
                input_tensors[op.outputs[0].name] = op.outputs[0]

            if op.type not in self.UNLIKELY_OUTPUT_TYPES and op.outputs.__len__() == 1:
                output_tensors[op.outputs[0].name] = op.outputs[0]

        output_tensor_names = output_tensors.keys()

        for op in graph.get_operations():
            for in_t in op.inputs:
                if in_t.name in output_tensor_names:
                    output_tensors.pop(in_t.name)
            for cont_op in op.control_inputs:
                for out_t in cont_op.outputs:
                    if out_t.name in output_tensor_names:
                        output_tensors.pop(out_t.name)


        tf.reset_default_graph()

        self.__input_tensor_names = list(input_tensors.keys())
        self.__output_tensor_names = list(output_tensors.keys())
        self.__input_tensors = list(input_tensors.values())
        self.__output_tensors = list(output_tensors.values())