code: def get_mem_size(self, op, output_shape):
      np_data_type = self.np_data_type
      if len(op.output_type) > 0:
          np_data_type = data_type_to_np_dt(
              op.output_type[0], self.np_data_type
          )
      data_type_bytes = np.dtype(np_data_type).itemsize
      if op.type == "WinogradTransform" or op.type == "GEMM":
          mace_check(
              len(output_shape) == 4,
              "WinogradTransform and GEMM only support 4-dim",
          )
          mem_size = (
              output_shape[2]
              * output_shape[3]
              * output_shape[0]
              * int((output_shape[1] + 3) / 4)
              * 4
          )
      else:
          dim_size = len(output_shape)
          if dim_size > 0:
              mem_size = int((output_shape[dim_size - 1] + 3) / 4) * 4
              for i in range(dim_size - 1):
                  mem_size *= output_shape[i]
          else:
              print("the op %s's output dim size is 0" % op.type)
              mem_size = 0
      return mem_size * data_type_bytes
  
file_path: mace/tools/python/micro/mem_computer.py
imports: from utils.convert_util import data_type_to_np_dt
  from utils.util import mace_check
  import numpy
label_desc: Use image node_id 3 for calling the MemComputer obj's underlying member method code with example usage: obj.get_mem_size(op, output_shape) and returns: unknown