code: def add_node_id(self):
      node_id_counter = 0
      node_id_map = {}
      for tensor in self._model.tensors:
          tensor.node_id = node_id_counter
          node_id_counter += 1
          node_id_map[tensor.name] = tensor.node_id
      for input_info in self._model.input_info:
          input_info.node_id = node_id_counter
          node_id_counter += 1
          node_id_map[input_info.name] = input_info.node_id
      for op in self._model.op:
          op.node_id = node_id_counter
          node_id_counter += 1
          node_id_map[op.output[0]] = op.node_id
  
      for op in self._model.op:
          del op.node_input[:]
          for input_tensor in op.input:
              node_input = op.node_input.add()
              node_input.node_id = node_id_map[input_tensor]
      for output_info in self._model.output_info:
          output_info.node_id = node_id_map[output_info.name]
  
imports: import copy
  import numpy
  from enum import Enum
  from operator import mul
  from py_proto import mace_pb2
  from transform import base_converter
  from transform.base_converter import ConverterUtil
  from transform.base_converter import EltwiseType
  from transform.base_converter import MaceKeyword
  from transform.base_converter import MaceOp
  from transform.base_converter import PaddingMode
  from transform.base_converter import PadType
  from transform.base_converter import PoolingType
  from transform.base_converter import ReduceType
  from transform.base_converter import DataFormat
  from transform.base_converter import FrameworkType
  from utils.util import mace_check
label_desc: Use image node_id 7 for calling the ApuConverter obj's underlying member method code with example usage: obj.add_node_id() without return types